我如何设置不同的阈值以获得 ROC 图的多个值
How do i set different threshold to get multiple values for ROC plot
下面是我编写的用于构建 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
如何获得多个阈值以获得绘制 ROC 曲线的不同 Tpr 和 fpr 率?
这是因为您直接预测 class 标签。您的预测可能如下所示:
table(svm.pred)
pred
class1 class2
28 37
因此没有阈值可供选择来构建 ROC 曲线。
尝试进行回归(在 e1071 中,您需要确保 class 标签是数字):
svm.model <- svm(as.numeric(Class) ~ ., data = training, type="eps-regression", [...])
下面是我编写的用于构建 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
如何获得多个阈值以获得绘制 ROC 曲线的不同 Tpr 和 fpr 率?
这是因为您直接预测 class 标签。您的预测可能如下所示:
table(svm.pred)
pred
class1 class2
28 37
因此没有阈值可供选择来构建 ROC 曲线。
尝试进行回归(在 e1071 中,您需要确保 class 标签是数字):
svm.model <- svm(as.numeric(Class) ~ ., data = training, type="eps-regression", [...])