Dla poniższych danych napisz jaka jest wartość krzywej LIFT dla \(x=1\). Skorzystaj z definicji z wykładu.
df <- read.csv("naive_bayes_data.csv", row.names = 1)
df$y <- df$y + 1
df$y <- factor(df$y)
str(df)
## 'data.frame': 1000 obs. of 4 variables:
## $ y : Factor w/ 2 levels "1","2": 1 2 1 2 2 1 2 2 2 1 ...
## $ x1: int 1 1 1 0 1 0 1 1 1 0 ...
## $ x2: int 0 0 1 1 0 0 1 0 1 0 ...
## $ x3: int 0 1 0 1 0 0 0 1 0 1 ...
cvTools
Jeśli chcemy wykonać 3-krotną kroswalidację dla zbioru danych o 20 obserwacjach. Pierwsza kolumna Fold
mówi nam, do którego zbioru kroswalidacyjnego obserwacja o indeksie Index
ma należeć.
library(cvTools)
cvFolds(20, K=3)
##
## 3-fold CV:
## Fold Index
## 1 20
## 2 16
## 3 10
## 1 12
## 2 7
## 3 13
## 1 15
## 2 8
## 3 14
## 1 19
## 2 6
## 3 17
## 1 5
## 2 2
## 3 11
## 1 18
## 2 4
## 3 1
## 1 3
## 2 9
ROCR
df <- read.csv("naive_bayes_data.csv", row.names = 1)
df$y <- factor(df$y)
str(df)
## 'data.frame': 1000 obs. of 4 variables:
## $ y : Factor w/ 2 levels "0","1": 1 2 1 2 2 1 2 2 2 1 ...
## $ x1: int 1 1 1 0 1 0 1 1 1 0 ...
## $ x2: int 0 0 1 1 0 0 1 0 1 0 ...
## $ x3: int 0 1 0 1 0 0 0 1 0 1 ...
Krzywa ROC:
library(rpart)
library(ROCR)
drzewo.model <- rpart(y~., data=df)
predictions <- predict(drzewo.model, df)[,2]
labels <- df$y
pred <- prediction(predictions, labels)
perf <- performance(pred, measure = "tpr", x.measure = "fpr")
plot(perf)
Wartość AUC (@
bo funkcja performance
tworzy obiekt klasy S4, a zwykle w R mamy obiekty S3 - zob. typeof(perf)
):
perf <- performance(pred, measure = "auc")
perf@y.name
## [1] "Area under the ROC curve"
perf@y.values
## [[1]]
## [1] 0.693744