ROC曲线看起来不正确

ROC曲线看起来不正确,r,machine-learning,data-mining,roc,R,Machine Learning,Data Mining,Roc,我用ROCR软件包绘制了一个2类问题的ROC曲线。根据我的理解,至少对于较小的数据集,曲线应该看起来像阶跃变化图。我的输入实际上很小,但我得到的曲线基本上是直线。是因为PROC拟合了一条曲线,还是我遗漏了其他什么 输入在这里,代码如下,最后是ROC部分。谢谢你的帮助 library("caret") library("ROCR") sensor6data_s10_2class <- read.csv("/home/sensei/clustering/sensor6data_f21_s10_

我用ROCR软件包绘制了一个2类问题的ROC曲线。根据我的理解,至少对于较小的数据集,曲线应该看起来像阶跃变化图。我的输入实际上很小,但我得到的曲线基本上是直线。是因为PROC拟合了一条曲线,还是我遗漏了其他什么

输入在这里,代码如下,最后是ROC部分。谢谢你的帮助

library("caret")
library("ROCR")
sensor6data_s10_2class <- read.csv("/home/sensei/clustering/sensor6data_f21_s10_with2Labels.csv")
sensor6data_s10_2class <- within(sensor6data_s10_2class, Class <- as.factor(Class))
sensor6data_s10_2class$Class2 <- relevel(sensor6data_s10_2class$Class,ref="1")

set.seed("4321")
inTrain_s10_2class <- createDataPartition(y = sensor6data_s10_2class$Class, p = .75, list = FALSE)
training_s10_2class <- sensor6data_s10_2class[inTrain_s10_2class,]
testing_s10_2class <- sensor6data_s10_2class[-inTrain_s10_2class,]
y_s10 <- testing_s10_2class[,22]

ctrl_s10_2class <- trainControl(method = "repeatedcv", number = 10, repeats = 10 , savePredictions = TRUE)
model_train_multinom_s10_2class <- train(Class2 ~ ZCR + Energy + SpectralC + SpectralS + SpectralE + SpectralF + SpectralR + MFCC1 + MFCC2 + MFCC3 + MFCC4 + MFCC5 + MFCC6 + MFCC7 + MFCC8 + MFCC9 + MFCC10 + MFCC11 + MFCC12 + MFCC13, data = training_s10_2class, method="multinom", trControl = ctrl_s10_2class)
pred_multinom_s10_2class = predict(model_train_multinom_s10_2class, newdata=testing_s10_2class)

pred2_s10 <- prediction(as.numeric(as.character(pred_multinom_s10_2class)), as.numeric(as.character(y_s10)))
perf2_s10 <- performance(pred2_s10, "tpr", "fpr")
plot(perf2_s10,col='magenta',lwd=3)
库(“插入符号”)
图书馆(“ROCR”)

sensor6data_s10_2类别您应该预测类别概率,而不是类别标签。试试这个:

pred_multinom_s10_2class = predict(model_train_multinom_s10_2class, newdata=testing_s10_2class, type='prob')

pred2_s10 <- prediction(pred_multinom_s10_2class[,1], as.numeric(as.character(y_s10)))
perf2_s10 <- performance(pred2_s10, "tpr", "fpr")
plot(perf2_s10,col='magenta',lwd=3)
pred\u multinom\u s10\u 2class=预测(model\u train\u multinom\u s10\u 2class,newdata=测试\u s10\u 2class,type='prob')

pred2_s10您应该预测类别概率,而不是类别标签。试试这个:

pred_multinom_s10_2class = predict(model_train_multinom_s10_2class, newdata=testing_s10_2class, type='prob')

pred2_s10 <- prediction(pred_multinom_s10_2class[,1], as.numeric(as.character(y_s10)))
perf2_s10 <- performance(pred2_s10, "tpr", "fpr")
plot(perf2_s10,col='magenta',lwd=3)
pred\u multinom\u s10\u 2class=预测(model\u train\u multinom\u s10\u 2class,newdata=测试\u s10\u 2class,type='prob')

是的,我完全忘了。谢谢你的帮助。没错,我完全忘了。谢谢你的帮助。