如何在同一图中绘制不同模型的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
相关产品推荐
相关产品推荐

