我使用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
提前谢谢
答案 0 :(得分:1)
据我所知,你有一个多类响应变量(对应10个不同的组)。
ROC曲线是针对两组的分类定义的,因此多类所做的是计算“ 一组与其余组 ”的分类。 multiclass.roc
函数不允许您表示曲线,但了解它的作用,您可以:
1)考虑与您拥有的群组一样多的roc曲线。也就是说,ROC - 分类的曲线:
您可以使用roc
功能执行此操作。您唯一需要的是为属于组i的个体重新定义响应向量1,为其余个体重新定义0。使用不同的名称保存每个roc
对象。
2)要表示所有曲线,只需对每条曲线使用plot
函数,将plot(..., add=T)
添加到所有曲线,但第一条曲线。