R:使用ROCR绘制多个不同颜色的ROC曲线

时间:2017-01-24 16:16:08

标签: r plot machine-learning data-mining roc

以下代码取自@adibender回答“一个图ROCR中的多个ROC曲线”。代码部分来自?plot.performance。

library(ROCR)
data(ROCR.simple)
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)

我想使用r包ROCR在单个图中说明几个ROC曲线,如上面的代码。但是,我希望ROC曲线有不同的颜色。如何将不同的颜色应用于不同的曲线?提前致谢。

2 个答案:

答案 0 :(得分:3)

试试这个(你可以使用ROCR):

library(ROCR)
data(ROCR.simple)
preds <- cbind(p1 = ROCR.simple$predictions, 
               p2 = abs(ROCR.simple$predictions + 
                          rnorm(length(ROCR.simple$predictions), 0, 0.1)))
n <- 2 # you have n models
colors <- c('red', 'blue') # 2 colors
for (i in 1:n) {
   plot(performance(prediction(preds[,i],ROCR.simple$labels),"tpr","fpr"), 
                                           add=(i!=1),col=colors[i],lwd=2)
}

enter image description here

答案 1 :(得分:0)

plot对象的ROCR函数似乎不提供此选项。因此,您必须拆开对象并手动完成。

例如,使用ggplot2

library(ggplot2)
df <- data.frame(Curve=as.factor(rep(c(1,2), each=length(perf.mat@x.values[[1]]))), 
                 FalsePositive=c(perf.mat@x.values[[1]],perf.mat@x.values[[2]]),
                 TruePositive=c(perf.mat@y.values[[1]],perf.mat@y.values[[2]]))
plt <- ggplot(df, aes(x=FalsePositive, y=TruePositive, color=Curve)) + geom_line()
print(plt)