✨ 欢迎关注Python机器学习AI ✨
本节介绍: SHAP基础标准图解医学期刊配图指南 。数据采用模拟数据,作者根据个人对机器学习的理解进行代码实现与图表输出,细节并不保证与原文一定相同,仅供参考。 详细数据和代码、文献将在稍后上传至交流群,付费成员可在交流群中获取下载。需要的朋友可关注公众文末提供的购买方式。 购买前请咨询,避免不必要的问题。 文末点赞、推荐、转发参与免费包邮赠书~
✨ 文献信息 ✨
文献中展示了使用SHAP方法对模型进行整体解释的三个可视化图表。具体解读如下:
A. SHAP汇总条形图 :该图展示了不同特征对模型输出影响的平均绝对SHAP值,条形的长度代表特征的重要性,越长的条形表示该特征对模型的影响越大。通过这个图,可以识别出在模型中最关键的特征
B. SHAP汇总点图 :此图显示了每个特征对每个患者的SHAP值分布情况。每个点代表一个患者的特征值,点的颜色表示该特征的实际值,高特征值为红色,低特征值为蓝色。通过此图,可以直观地了解不同特征在各个患者中的分布情况及其对模型预测的影响
C. SHAP决策图 :此图展示了每个患者在各个特征上的具体表现与模型预测结果之间的关系。通过曲线的变化趋势,可以观察到每个特征在不同患者中的影响,并能进一步分析每个特征如何推动最终的预测结果
这三种可视化方式共同为模型解读提供了全面的模型解释,帮助更好地理解模型如何基于各个特征作出预测
文献中这张图展示的是使用SHAP方法对单个样本进行模型解释的四个可视化图表。具体解读如下:
A. 个体力图(Depressed患者):此图展示了一个抑郁症患者的特征对模型预测的贡献。图中的每个条形代表一个特征的影响,条形的长度和颜色(红色表示高值,蓝色表示低值)展示了特征对预测结果的推高或压低作用。通过此图,可以了解该患者各特征如何影响预测结果
C. 单个患者的SHAP瀑布图(Depressed患者):此图为SHAP瀑布图,显示了不同特征对单一抑郁症患者预测结果的逐步影响。每个特征的贡献通过水平的分布呈现,颜色从红到蓝代表特征值的高低,图示可以直观了解特征如何通过累积影响最终预测,实际上和A图是针对的同一个样本只是不同的展现显示而已
B. 个体力图(Non-depressed患者)、D. 单个患者的SHAP瀑布图(Non-depressed患者):类似于A、C图,展示了该患者特征对预测结果的逐步影响,只是这里的患者为不患 抑郁症的样本,解读方法还是一样的
这些图表为每个患者提供深入的个体化模型解释,帮助理解特征如何在单样本层面上影响预测结果
这种配图形式,通常用于医学期刊中的SHAP组合图,涵盖了模型的整体解释和单样本解释,之所以被称为“基础解读”,是因为这些图表是由代码函数预设的,可以直接输出,除了颜色的变化,图表形式本身不会发生改变。通过理解每个图表的含义后,可以在此基础上进行改造与设计,采用不同的展示手法来避免审美疲劳。可以参考往期公众号中对SHAP可视化的创新与变化,从而为读者带来更具吸引力的展示效果
✨ 期刊仿图实现 ✨
这组图展示了针对文献中常见的SHAP可视化形式在模拟数据集上的实现,涵盖了不同图表的展示与分析,更多的代码实现细节可参考下面的代码实现
✨ 基础代码实现 ✨
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"Dataset.csv"
df = pd.read_csv(path)
from xgboost import XGBClassifier
from sklearn.model_selection import GridSearchCV
# 初始化 XGBoost 分类模型
model_xgb = XGBClassifier(use_label_encoder=False, eval_metric='logloss', random_state=42)
# 定义参数网格
param_grid_xgb = {
'n_estimators': [50, 100, 200], # 树的数量
'learning_rate': [0.01, 0.1, 0.2], # 学习率
'max_depth': [3, 5, 10], # 最大深度
'subsample': [0.8, 1.0], # 子采样比率
'colsample_bytree': [0.8, 1.0] # 树的列采样比率
}
# 使用 GridSearchCV 进行网格搜索和 k 折交叉验证
grid_search_xgb = GridSearchCV(
estimator=model_xgb,
param_grid=param_grid_xgb,
scoring='neg_log_loss', # 评价指标为负对数损失
cv=5, # 5 折交叉验证
n_jobs=-1, # 并行计算
verbose=1 # 输出详细进度信息
)
# 训练模型
grid_search_xgb.fit(X_train, y_train)
# 使用最优参数训练模型
best_model_xgb = grid_search_xgb.best_estimator_
import shap
explainer = shap.TreeExplainer(best_model_xgb)
# 计算shap值为numpy.array数组
shap_values_numpy = explainer.shap_values(X_test)
# 计算shap值为Explanation格式
shap_values_Explanation = explainer(X_test)
使用XGBoost分类器和GridSearchCV进行模型训练与超参数调优,随后通过SHAP方法计算并解释模型对测试集的预测结果
plt.figure(figsize=(10, 5), dpi=1200)
shap.summary_plot(shap_values_numpy, X_test, plot_type="bar", show=False)
plt.tight_layout()
plt.savefig("1.pdf", format='pdf',bbox_inches='tight',dpi=1200)
plt.figure()
shap.summary_plot(shap_values_numpy, X_test, feature_names=X_test.columns, plot_type="dot", show=False)
plt.savefig("2.pdf", format='pdf',bbox_inches='tight',dpi=1200)
base_value = explainer.expected_value
plt.figure(figsize=(10, 5), dpi=1200)
shap.decision_plot(base_value, shap_values_numpy,X_test.columns,
link='logit', show=False)
plt.savefig("3.pdf", format='pdf', bbox_inches='tight',dpi=1200)
这段代码绘制三个SHAP可视化图表:1) SHAP汇总条形图(summary_plot,类型为"bar"),2) SHAP汇总点图(summary_plot,类型为"dot"),以及3) SHAP决策图(decision_plot),这些图表用于对模型进行整体解释
shap.force_plot(base_value, shap_values_numpy[1], X_test.iloc[1],
feature_names=X_test.columns, matplotlib=True, show=False)
plt.savefig("4.pdf", format='pdf', bbox_inches='tight',dpi=1200)
plt.figure(figsize=(10, 5), dpi=1200)
shap.plots.waterfall(shap_values_Explanation[1], show=False, max_display=13)
plt.savefig("5.pdf", format='pdf', bbox_inches='tight')
shap.force_plot(base_value, shap_values_numpy[2], X_test.iloc[2],
feature_names=X_test.columns, matplotlib=True, show=False)
plt.savefig("6.pdf", format='pdf', bbox_inches='tight',dpi=1200)
plt.figure(figsize=(10, 5), dpi=1200)
shap.plots.waterfall(shap_values_Explanation[2], show=False, max_display=8)
plt.savefig("7.pdf", format='pdf', bbox_inches='tight')
这段代码绘制四个SHAP可视化图表:1) SHAP力图(force_plot)针对样本1和样本2,2) SHAP瀑布图(waterfall)展示样本1和样本2的特征影响,通过这些图表进行单样本的模型解释
✨ 文献后续 ✨
文献后续部署了一个Web程序,用户可以输入患者的特征信息,系统会返回对应的单样本SHAP力图,帮助解释模型预测结果
这是公众号往期更新的Web部署内容,可以看到返回的样本SHAP力图及对应的文案与文献相似,只是针对的疾病类型不同(如心脏病与抑郁症)。该期完整项目内容已上传至交流群中,感兴趣的读者可以查看下方的购买方式获取详细资料
✨ 该文章案例 ✨
在上传至交流群的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。
同时,结合提供的免费AI聚合网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。
✨ 购买介绍 ✨
本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到淘宝店铺:Python机器学习AI,或添加作者微信deep_ML联系,购买作者的公众号合集。截至目前为止,合集已包含200多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用,包括但不限于ChatGPT、Deepseek、Claude等。
更新的内容包含数据、代码、注释和参考资料。 作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤 。 购买前请咨询,避免不必要的问题。
✨ 群友反馈 ✨
✨ 淘宝店铺 ✨
请大家打开淘宝扫描上方的二维码,进入店铺,获取更多Python机器学习和AI相关的内容,或者添加作者微信deep_ML联系 避免淘宝客服漏掉信息 ,希望能为您的学习之路提供帮助!
✨ 免费赠书 ✨
支持知识分享,畅享学习乐趣!特别感谢清华大学出版社 对本次赠书活动的鼎力支持!即日起,只需点赞、推荐、转发 此文章,作者将从后台随机抽取一位幸运儿,免费包邮赠送清华出版社提供的《从零构建大模型:算法、训练与微调》这本精彩书籍📚!
💡 赶快参与,一键三连,说不定你就是那位幸运读者哦!
往期推荐
Frontiers in Oncology:利用生存机器学习RSF模型预测患者预后模拟实现
期刊配图:通过SHAP组图解读模型探索不同类型特征和分组对模型的影响
机器学习在临床数据分析中的应用:从数据预处理到Web应用实现的完整流程教学
Psychiatry Research基于SHAP可解释性的机器学习模型构建与评估:混淆矩阵、ROC曲线、DCA与校准曲线分析
nature communications:基于Light GBM与随机森林结合的多模型特征选择方法
如果你对类似于这样的文章感兴趣。
欢迎关注、点赞、转发~
个人观点,仅供参考