使用R语言获取AUC并同时绘制多个ROC曲线。

8
我已经尝试了两种方法来绘制ROC曲线并获取每个ROC曲线的AUC。 方法1 - 第一种方法很简单,但我不知道如何同时绘制多个ROC曲线。我只是使用roc.curve(hacide.test$cls, pred_rose[,2]),输出将显示ROC曲线并给出AUC。 方法2 现在我可以同时绘制多个ROC曲线,但无法同时获取AUC。这是我绘制多个ROC曲线的方式:
library(ROCR)
pd1 <- prediction(pred_rose[,2], hacide.test$cls)
pf1 <- performance(pd1, "tpr","fpr")

pd2 <- prediction(pred_both[,2], hacide.test$cls)
pf2 <- performance(pd2, "tpr","fpr")

plot(pf1, colorize = TRUE)
plot(pf2, add = TRUE, colorize = TRUE)

这是我获取AUC的方法:

pf <- performance(pd3, "auc")
pf     # y.values is the AUC

您可以看到,当我使用第二种方法时,用于获取ROC曲线和AUC的performance()方法不同。此处的pf1、pf2输出没有AUC值。

方法1更简单,但您知道如何使用方法1一起绘制ROC曲线并仍然保留每个AUC值吗?

1个回答

13

你可以使用pROC软件包来完成这个操作。在调用plot时,使用print.auc参数:

library(pROC)
roc_rose <- plot(roc(hacide.test$cls, pred_rose[,2]), print.auc = TRUE, col = "blue")

而对于第二个ROC曲线,您需要更改AUC的y位置并使用add将两条曲线绘制在同一图中:

roc_rose <- plot(roc(hacide.test$cls, pred_both[,2]), print.auc = TRUE, 
                 col = "green", print.auc.y = .4, add = TRUE)

那是因为我没有将roc.curve更改为roc。我已经编辑了我的答案,现在应该可以工作了。 - Calimo
太棒了!非常感谢你! - Cherry Wu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接