Как установить другой порог, чтобы получить несколько значений для графика ROC - PullRequest
0 голосов
/ 08 октября 2018

Ниже приведен код, который я написал для построения модели SVM.Я использую пакет ROCR для построения графика ROC.

library(e1071)
library(caret)
library(gplots)
library(ROCR)

inTraining <- createDataPartition(data$Class, p = .70, list = FALSE)
training <- data[ inTraining,]
testing  <- data[-inTraining,]

svm.model <- svm(Class ~ ., data = training,cross=10, metric="ROC",type="C-classification",kernel="linear",na.action=na.omit,probability = TRUE)

#prediction and ROC
svm.model$index
svm.pred <- predict(svm.model, testing, probability = TRUE)
c <- as.numeric(svm.pred)
c = c - 1
pred <- prediction(c, testing$Class)
perf <- performance(pred,"tpr","fpr")
plot(perf,fpr.stop=0.1)

Я пытался следовать этому решению Получение пороговых значений из кривой ROC Но я получаю одно пороговое ограничение (0.173913 0.673913)

 > head(cutoffs)
  cut      fpr      tpr
1 Inf 0.000000 0.000000
2   1 0.173913 0.673913
3   0 1.000000 1.000000  

Как получить несколько порогов для получения разных значений Tpr и fpr для построения кривой ROC?

1 Ответ

0 голосов
/ 09 октября 2018

Это потому, что вы прогнозируете метки классов напрямую.Ваши прогнозы, вероятно, выглядят так:

table(svm.pred)
pred
    class1     class2
        28         37

Поэтому нет никаких порогов, из которых можно выбирать для построения кривой ROC.

Вместо этого попробуйте выполнить регрессию (в e1071 вам нужно будет сделатьубедитесь, что ваши метки класса являются числовыми):

svm.model <- svm(as.numeric(Class) ~ ., data = training, type="eps-regression", [...])
...