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

如何在一张图中叠加绘制多个tidymodels ROC曲线?

叠加多个tidymodels模型的ROC曲线

要在同一张图中叠加展示多个模型的ROC曲线,核心思路是先合并各模型的ROC曲线原始数据,再用ggplot统一绘制,具体步骤如下:

步骤1:生成各模型的ROC曲线数据

确保你用yardstick::roc_curve()函数生成每个模型的ROC曲线数据框(而非直接用autoplot()生成的ggplot对象)。假设你已经有两个模型的预测结果框preds1和preds2,其中包含真实标签列(比如truth)和预测概率列(比如.pred_class):

library(tidymodels)
library(tidyverse)

# 生成模型1的ROC曲线数据
roc1 <- roc_curve(preds1, truth = truth, estimate = .pred_class)
# 生成模型2的ROC曲线数据
roc2 <- roc_curve(preds2, truth = truth, estimate = .pred_class)

步骤2:合并并标记ROC数据

为每个模型的ROC数据添加标识列,再合并成一个数据框:

roc_combined <- bind_rows(
  roc1 %>% mutate(model = "模型A"),
  roc2 %>% mutate(model = "模型B")
)

步骤3:绘制叠加ROC曲线

用ggplot基于合并后的数据绘制曲线,自动按模型标识区分颜色:

ggplot(roc_combined, aes(x = 1 - specificity, y = sensitivity, color = model)) +
  geom_line(linewidth = 1) +  # 绘制ROC曲线
  geom_abline(lty = 2, color = "gray50") +  # 添加对角线参考线
  labs(
    x = "假阳性率 (1 - 特异性)",
    y = "真阳性率 (敏感性)",
    title = "多模型ROC曲线对比",
    color = "模型名称"
  ) +
  theme_minimal()

补充说明

  • 如果需要添加更多模型,只需重复步骤1和2,在bind_rows中加入对应模型的ROC数据即可。
  • 若你已经有autoplot()生成的ggplot对象,也可以通过ggplot_build(plot)$data提取其中的曲线数据,再按上述方法合并绘制,但直接使用roc_curve()生成的原始数据更简洁可控。

内容的提问来源于stack exchange,提问作者Fredrik Nylén

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 04:45:08