期刊配图:ROC曲线焕然一新,优化模型性能对比的视觉呈现(附代码)

机器学习算法推荐算法

picture.image

✨ 欢迎关注Python机器学习AI ✨

本节介绍: ROC曲线焕然一新,优化模型性能对比的视觉呈现 ,数据采用模拟数据无任何现实意义 ,作者根据个人对机器学习的理解进行代码实现与图表输出,仅供参考。 完整 数据和代码将在稍后上传至交流群,成员可在交流群中获取下载。未加入交流群的同学,请在后台回复【1018】获取完整代码,需要的朋友可关注公众文末提供的获取方式。文末提供高效的AI工具~!点赞、推荐参与文末包邮赠书~!

✨ 论文信息 ✨

picture.image

X轴:表示假阳性率 (FPR),也就是在所有负类样本中被误判为正类的比例。数值从0到1,表示从完全不误判(0)到完全错误地预测所有负类样本为正类(1)的变化

Y轴:表示真正率 (TPR),即在所有正类样本中被正确识别为正类的比例。数值从0到1,表示从完全没有正确预测正类(0)到所有正类样本都被正确分类(1)

不同曲线:每条曲线代表不同的模型(如随机森林、LightGBM、XGBoost等)。这些模型在ROC曲线中的表现通过曲线的形状和位置来展示。曲线越接近左上角,说明该模型的性能越好,也就是AUC值越解决于1

ROC曲线的斜线(虚线):代表随机猜测的模型表现,如果模型的ROC曲线在这条虚线附近,说明它的分类效果和随机猜测差不多

曲线下的数字(0.804, 0.802 等): 这些是每个模型的AUC值,即曲线下方的面积,越接近1说明模型性能越好。AUC值较高的模型(如0.804)相较于AUC较低的模型(如0.757)具有更强的区分能力,下面为优化后的ROC曲线图

picture.image

与常见的ROC曲线相比,这张图在可读性和信息呈现方面进行了优化,不仅清楚地展示了每个模型的ROC曲线,还加入了AUC值、明确的颜色区分和精确的模型性能对比

✨ 代码实现 ✨

  
import pandas as pd  
import numpy as np  
import matplotlib.pyplot as plt  
plt.rcParams['font.family'] = 'Times New Roman'  
plt.rcParams['axes.unicode_minus'] = False  
import warnings  
# 忽略所有警告  
warnings.filterwarnings("ignore")  
  
path = r"2025-10-18公众号Python机器学习AI.xlsx"  
df = pd.read_excel(path)  
from sklearn.model_selection import train_test_split  
  
# 划分特征和目标变量  
X = df.drop(['y'], axis=1)    
y = df['y']    
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(  
    X,    
    y,   
    test_size=0.3,   
    random_state=42,   
    stratify=df['y']   
)  
from sklearn.linear_model import LogisticRegression  
from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier  
from sklearn.metrics import roc_curve, auc  
import lightgbm as lgb  
import xgboost as xgb  
from catboost import CatBoostClassifier  
  
# 初始化并训练 RandomForest 模型  
rf_model = RandomForestClassifier(random_state=42)  
rf_model.fit(X_train, y_train)  
  
# 初始化并训练 LightGBM 模型  
lgb_model = lgb.LGBMClassifier(random_state=42, verbose=-1)  
lgb_model.fit(X_train, y_train)  
  
# 初始化并训练 XGBoost 模型  
xgb_model = xgb.XGBClassifier(random_state=42, eval_metric='logloss')  
xgb_model.fit(X_train, y_train)  
  
# 初始化并训练 CatBoost 模型  
catboost_model = CatBoostClassifier(random_state=42, verbose=0)  
catboost_model.fit(X_train, y_train)  
  
# 初始化并训练 AdaBoost 模型  
ada_model = AdaBoostClassifier(random_state=42)  
ada_model.fit(X_train, y_train)  
  
# 初始化并训练逻辑回归模型  
lr_model = LogisticRegression(random_state=42, max_iter=1000)  
lr_model.fit(X_train, y_train)

通过训练不同的机器学习模型(如随机森林、LightGBM、XGBoost、CatBoost、AdaBoost 和逻辑回归)来进行分类任务,并将数据划分为训练集和测试集,准备进行后续的模型评估和性能比较

  
import matplotlib.gridspec as gridspec  
import matplotlib.patches as mpatches  
from sklearn.metrics import roc_curve, auc  
from matplotlib.colors import Normalize  
from matplotlib.cm import ScalarMappable  
  
trained_models = {  
    "Random Forest": rf_model,  
    "LightGBM": lgb_model,  
    "XGBoost": xgb_model,  
    "CatBoost": catboost_model,  
    "AdaBoost": ada_model,  
    "Logistic Regression": lr_model  
}  
  
colors = {  
    "Random Forest": "#66c2a5",  
    "LightGBM": "#fc8d62",  
    "XGBoost": "#8da0cb",  
    "CatBoost": "#e78ac3",  
    "AdaBoost": "#a6d854",  
    "Logistic Regression": "#ffd92f"  
}  
# 计算每个模型的绘图数据  
results = []  
for name, model in trained_models.items():  
    y_prob = model.predict_proba(X_test)[:, 1]  
    fpr, tpr, _ = roc_curve(y_test, y_prob)  
    roc_auc = auc(fpr, tpr)  
    results.append({'name': name, 'fpr': fpr, 'tpr': tpr, 'auc': roc_auc})  
  
# 根据AUC分数对结果进行降序排序  
sorted_results = sorted(results, key=lambda x: x['auc'], reverse=True)  
  
# 使用 GridSpec 自定义子图布局  
fig = plt.figure(figsize=(10, 7))  
gs = gridspec.GridSpec(1, 2, width_ratios=[4, 1], wspace=0.05)  
  
# ROC曲线  
ax1 = plt.subplot(gs[0])  
for res in results:  
    style = '--' if res['name'] == 'Stacked Model' else '-'  
    lw = 3 if res['name'] == 'Stacked Model' else 2.5  
    ax1.plot(res['fpr'], res['tpr'],  
             lw=lw,  
             color=colors[res['name']],  
             linestyle=style,  
             label=f"{res['name']}")  
  
# 绘制随机猜测线  
ax1.plot([0, 1], [0, 1], 'r--', linewidth=1.5, alpha=0.8)  
  
# 设置图表细节  
ax1.set_xlim([-0.05, 1.05])  
ax1.set_ylim([-0.05, 1.05])  
ax1.set_xlabel("False Positive Rate (1-Specificity)", fontsize=18)  
ax1.set_ylabel("True Positive Rate (Sensitivity)", fontsize=18)  
ax1.set_title("ROC Curve - Test Set Model Comparison", fontsize=20, fontweight="bold")  
ax1.legend(loc="lower right", fontsize=15, frameon=False)  
ax1.tick_params(axis='both', which='major', labelsize=18)  
  
# AUC值颜色条  
ax2 = plt.subplot(gs[1])  
ax2.axis('off')  # 隐藏坐标轴  
  
# 定义颜色映射,使用AUC值来确定颜色渐变  
norm = Normalize(vmin=min(res['auc'] for res in results), vmax=max(res['auc'] for res in results))  
cmap = plt.cm.Blues  # 蓝色渐变  
  
num_models = len(sorted_results)  
bar_height = 0.9  
  
.....后台回复【1018】获取完整代码或加入交流群  
  
# 设置AUC条形图的y轴和x轴范围  
ax2.set_ylim(-0.1, num_models - (1 - bar_height) - 0.1)  
ax2.set_xlim(0, 1)  
plt.savefig("ROC.pdf", format='pdf', bbox_inches='tight', dpi=1200)  
plt.show()

picture.image

通过绘制多个机器学习模型的ROC曲线,并对每个模型的AUC值进行颜色映射和显示,提供了详细的模型性能比较。相比于标准绘图代码,它采用了更高级的图表布局和样式定制,使用matplotlib.gridspec和颜色条的结合,能更直观地展示不同模型的表现和AUC值差异,适用于需要详细分析和美化展示的场景。标准绘图代码则更简洁,适合快速绘制和对比模型性能,重点在于图形的简洁和易读性

当然,公众号中还有更多机器学习期刊实战技巧,您可以通过历史文章进行检索和阅读,关注公众号,点击“发信息”>“历史文章”即可搜索公众号所有文章信息

picture.image

✨ 该文章案例 ✨

picture.image

在上传至交流群的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。

同时,结合提供的免费AI聚合网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。

✨ 介绍 ✨

本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到淘宝店铺:Python机器学习AI,下方提供淘宝店铺二维码获取作者的公众号合集。截至目前为止,合集已包含近300多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用。

更新的内容包含数据、代码、注释和参考资料。 作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤 。 获取 前请咨询,避免不必要的问题。

✨ 群友反馈 ✨

picture.image

✨ 淘宝店铺 ✨

picture.image

请大家打开淘宝扫描上方的二维码,进入店铺,获取更多Python机器学习和AI相关的内容 ,希望能为您的学习之路提供帮助!

✨ 书籍推荐 ✨

无论你是零编程基础的科研新手,还是想提升机器学习技能的医学科研工作者,这本书都能带你从入门到进阶,掌握Python数据分析+医学AI应用的全流程技能

✨ AI工具推荐 ✨

picture.image

✨ 赠书活动 ✨

picture.image

支持知识分享,畅享学习乐趣!特别感谢清华大学出版社 对本次赠书活动的鼎力支持!即日起,只需点赞、推荐、转发 此文章,作者将从后台随机抽取一位幸运儿,免费包邮赠送清华出版社提供的《大模型应用开发》这本精彩书籍📚!

💡 赶快参与,一键三连,说不定你就是那位幸运读者哦!

往期推荐

期刊配图:模型SHAP解释特征类别柱状图、饼图与蜂巢图的组合展示

期刊复现:基于自动机器学习的预测模型构建及其残差和部分依赖分析

期刊复现:SVM、RF、BDT、DT、Logit五大模型堆叠31种组合情况最优模型的SHAP解释

期刊复现:单变量特征降维与共线性分析结合RFE集成排名进行特征筛选下的组合拳流程

期刊复现:SVM、RF、BDT、DT、Logit五大模型堆叠31种组合情况优化与最优模型选择可视化

期刊复现:基于相关系数与AUC值优化特征选择剔除冗余特征精简模型(附代码)

期刊复现:如何正确使用LASSO进行二分类特征选择?避开常见误区,掌握实用技巧

期刊复现:融合聚类与多分类转二分类的亚型可解释SHAP机器学习模型构建

期刊复现:基于LightGBM、XGBoost与RF的Lasso回归堆叠模型在连续和分类特征上的模型解释

期刊复现:基于LightGBM、XGBoost与RF的堆叠模型贝叶斯优化调参与Lasso回归元模型,结合10倍交叉验证

picture.image

如果你对类似于这样的文章感兴趣。

欢迎关注、点赞、转发~

个人观点,仅供参考

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
火山引擎大规模机器学习平台架构设计与应用实践
围绕数据加速、模型分布式训练框架建设、大规模异构集群调度、模型开发过程标准化等AI工程化实践,全面分享如何以开发者的极致体验为核心,进行机器学习平台的设计与实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论