You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

循环计算ROC与AUC 批量绘制多模型ROC曲线

多二分类模型的AUC计算与ROC曲线同图绘制

步骤1:批量计算各模型的AUC并存储ROC对象

把所有模型的路径整理成向量,通过循环批量加载模型、生成预测概率、计算ROC曲线与AUC,同时将每个模型的ROC对象存入列表,方便后续统一绘图。

library(pROC)
library(keras)

# 替换为你的所有模型文件路径
model_paths <- c("M1.h5", "M2.h5", "M3.h5")
roc_list <- list()  # 存储各模型的ROC对象

for (idx in seq_along(model_paths)) {
  # 加载模型
  current_model <- load_model_hdf5(model_paths[idx])
  # 生成测试集正类预测概率
  pred_probs <- predict(current_model, test[, 1:10])
  # 计算ROC曲线,quiet=TRUE避免重复输出计算日志
  current_roc <- roc(response = test[, 11], predictor = pred_probs, quiet = TRUE)
  # 将ROC对象存入列表并以模型文件名命名
  roc_list[[model_paths[idx]]] <- current_roc
  # 打印当前模型的AUC值(保留4位小数)
  cat("模型", model_paths[idx], "的AUC:", round(auc(current_roc), 4), "\n")
}

步骤2:在同一张图中绘制所有ROC曲线

先初始化第一个模型的ROC曲线,再通过lines()依次添加其他模型的曲线,最后添加图例区分不同模型:

# 初始化绘图,绘制第一个模型的ROC曲线
plot(roc_list[[1]], 
     main = "多二分类模型ROC曲线对比",
     col = "darkblue", 
     lwd = 2,  # 设置线条宽度
     print.auc = TRUE  # 可选:在图上直接显示AUC值
)

# 循环添加剩余模型的ROC曲线
for (idx in 2:length(roc_list)) {
  # 自定义不同曲线颜色,避免重叠
  line_color <- c("darkred", "darkgreen", "orange")[idx-1]
  lines(roc_list[[idx]], 
        col = line_color, 
        lwd = 2,
        print.auc = TRUE, 
        print.auc.y = 1 - 0.1*(idx-1)  # 调整AUC值的垂直位置,防止重叠
  )
}

# 添加图例,位置可根据曲线分布调整(如bottomright)
legend("topright", 
       legend = names(roc_list),
       col = c("darkblue", "darkred", "darkgreen", "orange"),
       lwd = 2,
       bty = "n"  # 可选:去掉图例边框,让图更简洁
)

关键细节说明

  • 确保test[,11]是二分类标签(可以是0/1数值型或因子型),predict()输出的必须是正类的预测概率,符合pROC::roc()的输入要求。
  • quiet=TRUE参数能避免循环中重复输出ROC计算的日志信息,让控制台输出更整洁。
  • 调整col参数可以自定义各模型曲线的颜色,lwd控制线条粗细,提升图的可读性。
  • print.auc.y参数可以手动调整AUC值在图上的垂直位置,防止多个AUC值重叠。

内容的提问来源于stack exchange,提问作者user21573410

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 00:27:27