是否可以使用ROCR包在同一图中绘制不同分类器的roc曲线?我试过了:
>plot(perf.neuralNet, colorize=TRUE)
>lines(perf.randomForest)
Run Code Online (Sandbox Code Playgroud)
但我得到:
Error en as.double(y) :
cannot coerce type 'S4' to vector of type 'double'
Run Code Online (Sandbox Code Playgroud)
谢谢!
adi*_*der 36
您的lines-approach 的问题在于包中定义S4的类的对象没有泛型线函数.但是您可以像使用其他参数一样使用通用绘图函数.例如,这部分来自以下示例页面:performanceROCRadd = 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)
Run Code Online (Sandbox Code Playgroud)
或者,您可以将所有预测存储在矩阵中,并将所有后续步骤合并到一个矩阵中:
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)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果你出于某种原因真的想用它lines来绘制连续的ROC曲线,你就得做某事.像这样:
plot(perf)
lines(perf2@x.values[[1]], perf2@y.values[[1]], col = 2)
Run Code Online (Sandbox Code Playgroud)