用pROC R绘制ROC曲线

时间:2017-04-28 08:01:13

标签: r plot roc

我使用randomForest构建了一个文本分类器,因此为了评估它,我尝试使用pROCpâckage创建一个ROC曲线。

这里是代码:

ndsi.forest <- randomForest(tf.idf[train.index, ], as.factor(train$Note.Reco[train.index]), ntree = 100)

#predict with test data
ndsi.pred <-predict(ndsi.forest, newdata = tf.idf[test.index, ], response  = 'class')
pred <- data.frame(ndsi.pred)
result <- data.frame(id = Data_clean$id[test.index], sentiment = pred[ , ])

##"ROC curve"
multiclass.roc(result$sentiment, test$Note.Reco)

我想知道是否有办法制作情节?带有pROC包的ROC图?

我尝试使用此代码:

roc(test$Note.Reco, result$sentiment, levels = c(1,2,3,4,5,6,7,8,9,10))

但是我收到了这个错误:

Error in roc.default(test$Note.Reco, result$sentiment, levels = c(1, 2,  : 
  'levels' argument must have length 2

提前谢谢

1 个答案:

答案 0 :(得分:1)

据我所知,你有一个多类响应变量(对应10个不同的组)。

ROC曲线是针对两组的分类定义的,因此多类所做的是计算“ 一组与其余组 ”的分类。 multiclass.roc函数不允许您表示曲线,但了解它的作用,您可以:

1)考虑与您拥有的群组一样多的roc曲线。也就是说,ROC - 分类的曲线:

  • 第1组与非第1组
  • 第2组与非第2组
  • 。 。
  • 第10组与非第10组

您可以使用roc功能执行此操作。您唯一需要的是为属于组i的个体重新定义响应向量1,为其余个体重新定义0。使用不同的名称保存每个roc对象。

2)要表示所有曲线,只需对每条曲线使用plot函数,将plot(..., add=T)添加到所有曲线,但第一条曲线。