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

如何在同一图中绘制不同模型的ROC曲线?求后续代码指导

在同一图中绘制多个模型的ROC曲线

嘿,这事儿很简单!你现在的代码只处理了一个模型的ROC曲线,要在同一张图里加另一个模型的,只需要对第二个模型重复ROC的计算步骤,然后在同一个画布上继续plot就行。我帮你调整了代码,还加了一些让图更清晰的细节:

from matplotlib import pyplot as plt
from sklearn import metrics

# 假设你有两个不同的模型:modelA 和 modelB
# 注意:对比模型性能时,建议使用**同一测试集**(X_test、y_test),这样结果更具可比性
# 计算第一个模型的预测概率、ROC参数和AUC值
probaA = modelA.predict_proba(X_test)[:, 1]
fprA, tprA, _ = metrics.roc_curve(y_test, probaA)
aucA = metrics.roc_auc_score(y_test, probaA)

# 对第二个模型执行同样的计算
probaB = modelB.predict_proba(X_test)[:, 1]
fprB, tprB, _ = metrics.roc_curve(y_test, probaB)
aucB = metrics.roc_auc_score(y_test, probaB)

# 绘制随机猜测的基准线(灰色虚线)
plt.plot([0, 1], [0, 1], linestyle='--', color='gray', label='Random Guess')

# 绘制第一个模型的ROC曲线,标注AUC值(保留两位小数更美观)
plt.plot(fprA, tprA, label=f"Model A (AUC = {aucA:.2f})")
# 绘制第二个模型的ROC曲线
plt.plot(fprB, tprB, label=f"Model B (AUC = {aucB:.2f})")

# 设置图例位置(右下角,用'lower right'比数字4更直观)
plt.legend(loc='lower right')
# 添加坐标轴标签和标题,让图形更易读
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curves Comparison: Model A vs Model B')

# 显示最终图形
plt.show()

几个关键说明:

  • 我统一了pyplot的别名为plt,避免代码里出现两种调用方式的混乱
  • 如果你确实需要用不同的测试集(比如X_testA/X_testB、y_testA/y_testB),只需要把代码里的X_test和y_test替换成对应的数据集就行,但这种情况下模型对比的参考性会弱一些
  • 用f-string格式化AUC值,保留两位小数能让图例更整洁
  • 给基准线也加了标签,方便对比模型和随机猜测的差距

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:58:19