我尝试了2种绘制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)
Run Code Online (Sandbox Code Playgroud)
这是我获得AUC的方式:
pf <- performance(pd3, "auc")
pf # y.values is the AUC
Run Code Online (Sandbox Code Playgroud)
如您所见,当我使用第二种方法时,performance()用于获得ROC曲线和AUC的方法是不同的。此处pf1,pf2的输出没有AUC值。
方法1比较简单,但是您知道如何使用方法1一起绘制ROC曲线并仍然保留每个AUC值吗?
您可以使用该pROC程序包执行此操作。print.auc在调用中使用参数plot:
library(pROC)
roc_rose <- plot(roc(hacide.test$cls, pred_rose[,2]), print.auc = TRUE, col = "blue")
Run Code Online (Sandbox Code Playgroud)
对于第二条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)
Run Code Online (Sandbox Code Playgroud)