性能错误(pred,“ tpr”,“ fpr”)

时间:2018-08-04 07:15:30

标签: r roc

我正在尝试使用R中的ROCR包绘制ROC曲线,但遇到以下错误:

Error in performance(pred, "tpr", "fpr") : 
Assertion on 'pred' failed: Must have class 'Prediction', but has class 'prediction'

这是我用来进行效果细分调用的代码:

#convert actual and predicted labels to numeric
predicted<-as.numeric(as.character(test$Class))
actual<-as.numeric(as.character(test$overall_satisfaction))

#generate confusion matrix and label positive class
library(caret)
confusionMatrix(predicted,actual,positive="1")

混淆矩阵输出看起来很好。但是,在下一部分中,ROCR中的性能函数会引发错误,因此,不会绘制ROC曲线。

#ROC curve
library(ROCR)
pred<-prediction(predicted, actual)
perf<-performance(pred,"tpr","fpr")
plot(perf,col="red", main="mlr_parameters_ROC")
abline(0,1, lty = 8, col = "grey")

我无法弄清楚上面的代码出了什么问题。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

上面的代码似乎无法访问ROCR软件包中的性能函数,这就是我看到错误的原因。

我将其他所有内容保持不变,但解决了以下问题:

perf<-ROCR::performance(pred,"tpr","fpr")

现在ROC曲线可以很好地绘制!

答案 1 :(得分:1)

我今天遇到了同样的问题。这是我的打印效果(性能):

> print(performance)
function (pred, measures, task = NULL, model = NULL, feats = NULL) 
{
    if (!is.null(pred)) 
        assertClass(pred, classes = "Prediction")
    measures = checkMeasures(measures, pred$task.desc)
    res = vnapply(measures, doPerformanceIteration, pred = pred, 
        task = task, model = model, td = NULL, feats = feats)
    setNames(res, extractSubList(measures, "id"))
}
<bytecode: 0x0000000024d441e0>
<environment: namespace:mlr>

所以看起来mlr是与ROCR的performance()有冲突的库