【问题标题】:How do i set different threshold to get multiple values for ROC plot如何设置不同的阈值以获得 ROC 图的多个值
【发布时间】:2019-03-13 03:05:11
【问题描述】:

以下是我为构建 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)

我尝试遵循此解决方案 Obtaining threshold values from a ROC curve 但是,我得到了(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 曲线?

【问题讨论】:

    标签: r svm roc threshold


    【解决方案1】:

    这是因为您直接预测类别标签。您的预测可能如下所示:

    table(svm.pred)
    pred
        class1     class2
            28         37
    

    因此没有可供选择的阈值来构建 ROC 曲线。

    尝试进行回归(在 e1071 中,您需要确保您的类标签是数字):

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

    【讨论】:

      猜你喜欢
      • 2013-05-14
      • 2013-04-27
      • 2019-03-10
      • 2017-06-11
      • 2019-06-22
      • 2019-04-19
      • 2014-04-26
      • 1970-01-01
      • 2018-07-17
      相关资源
      最近更新 更多