是否可以使用 ROCR 包在同一图中绘制不同分类器的 roc 曲线?我试过了:
>plot(perf.neuralNet, colorize=TRUE)
>lines(perf.randomForest)
但我得到:
错误 en as.double(y) : 无法将类型“S4”强制转换为“double”类型的向量
谢谢!
您的 - 方法的问题在于,对于包中定义的类对象lines
没有通用行函数。但是您可以像使用附加参数一样使用通用绘图函数。例如,这部分来自示例页面:S4
performance
ROCR
add = TRUE
?plot.performance
library(ROCR)
data(ROCR.simple)
pred <- prediction( ROCR.simple$predictions, ROCR.simple$labels )
pred2 <- prediction(abs(ROCR.simple$predictions +
rnorm(length(ROCR.simple$predictions), 0, 0.1)),
ROCR.simple$labels)
perf <- performance( pred, "tpr", "fpr" )
perf2 <- performance(pred2, "tpr", "fpr")
plot( perf, colorize = TRUE)
plot(perf2, add = TRUE, colorize = TRUE)
或者,您可以将所有预测存储在一个矩阵中,然后将所有后续步骤合二为一:
preds <- cbind(p1 = ROCR.simple$predictions,
p2 = abs(ROCR.simple$predictions +
rnorm(length(ROCR.simple$predictions), 0, 0.1)))
pred.mat <- prediction(preds, labels = matrix(ROCR.simple$labels,
nrow = length(ROCR.simple$labels), ncol = 2) )
perf.mat <- performance(pred.mat, "tpr", "fpr")
plot(perf.mat, colorize = TRUE)
顺便说一句,如果您出于某种原因真的想用来lines
绘制连续的 ROC 曲线,您将不得不做某事。像这样:
plot(perf)
lines(perf2@x.values[[1]], perf2@y.values[[1]], col = 2)
呼应@adibender,并添加评论:该示例不包括如何使用第二种(一次全部绘制)方法为每条曲线设置单独的颜色。在这种情况下,将 col 作为列表传递:
library(ROCR)
data(ROCR.hiv)
x <- prediction(ROCR.hiv$hiv.nn$predictions, ROCR.hiv$hiv.nn$labels)
ROC <- performance(x, "tpr", "fpr")
plot(ROC, col = as.list(1:10))
R 具有在一个窗口中绘制多个绘图的功能。如果包不支持在一个窗口中绘制多个图,您可以使用 R 的标准工具解决问题。其他方式:几个 ROC的示例 使用此脚本的文章:使用 ROCR 绘制 ROC 曲线的示例