✨ 欢迎关注 ✨
本节介绍: SHAP值分析模型可解释性在柱状图与蜂窝图中的进阶组合展示 。数据采用模拟数据,作者根据个人对机器学习的理解进行代码实现与图表输出,仅供参考。 完整 数据和代码将在稍后上传至交流群,付费成员可在交流群中获取下载。需要的朋友可关注公众文末提供的购买方式。 购买前请咨询,避免不必要的问题。
✨ 文献信息 ✨
这张图展示多个机器学习任务模型中每个蛋白质的Shapley加性解释(SHAP)值。每个蛋白质由一条条形图表示,条形的长度表示该蛋白质对不同诊断任务结果的贡献程度:条形越长,表示蛋白质的贡献越大,每个点的颜色表示血浆蛋白的水平,从低到高呈现蓝色(低水平)到红色(高水平)的渐变
也就是常见的SHAP值分析在模型可解释性中的应用,采用柱状图与蜂窝图的进阶组合展示。在常见的任务中通常通过多模型比较来选择最优模型并进行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
df = pd.read_excel('2025-6-11公众号Python机器学习AI.xlsx')
from sklearn.model_selection import train_test_split
y = df['y']
X = df.drop(['y'], axis=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,
random_state=42, stratify=df['y'])
from xgboost import XGBClassifier
from sklearn.model_selection import GridSearchCV, KFold
from sklearn.metrics import accuracy_score, roc_auc_score
# 定义 XGBoost 分类模型
model_xgb = XGBClassifier(use_label_encoder=False, eval_metric='logloss', random_state=8)
# 定义参数网格
param_grid = {
'n_estimators': [50, 100, 200],
'max_depth': [3, 5, 7],
'learning_rate': [0.01, 0.1, 0.2],
'subsample': [0.8, 1.0],
'colsample_bytree': [0.8, 1.0]
}
# 使用 K 折交叉验证
kfold = KFold(n_splits=5, shuffle=True, random_state=8)
# 使用网格搜索寻找最佳参数
grid_search = GridSearchCV(estimator=model_xgb, param_grid=param_grid, scoring='accuracy',
cv=kfold, verbose=1, n_jobs=-1)
# 拟合模型
grid_search.fit(X_train, y_train)
# 使用最优参数训练模型
xgboost = grid_search.best_estimator_
import sys
import os
# 将标准输出重定向到os.devnull
sys.stdout = open(os.devnull, 'w')
import shap
explainer = shap.TreeExplainer(xgboost)
shap_values = explainer.shap_values(X_test)
plt.figure()
shap.summary_plot(shap_values, X_test, feature_names=X_test.columns, plot_type="dot", max_display=13, show=False, cmap="coolwarm")
plt.savefig("1.pdf", format='pdf',bbox_inches='tight', dpi=1200)
plt.show()
plt.figure()
shap.summary_plot(shap_values, X_test, plot_type="bar", show=False)
plt.savefig("2.pdf", format='pdf',bbox_inches='tight', dpi=1200)
plt.show()
使用XGBoost模型进行训练,并借助 SHAP 库对模型结果进行解释。生成两种标准的SHAP可视化图——SHAP 蜂巢图(点图)和 SHAP 柱状图。蜂巢图清晰展示每个特征在不同样本中的SHAP值分布以及其对模型预测的方向和强度,颜色映射反映特征值的大小;而柱状图则从全局角度显示各特征的重要性,通过平均绝对SHAP值来衡量。整个过程采用的是SHAP官方推荐的标准调用方式,是目前解释树模型(如XGBoost)预测结果的主流方法
接下来利用环状玫瑰图 替代SHAP柱状图 ,展示各特征相对于整体的重要性占比,旨在更具美观性和视觉冲击力,也就是往期文章——期刊配图:Energy模型解释与SHAP可视化组合,美是无声的竞争力,最后把 SHAP 蜂巢环绕在周围即可得到下图
✨ 该文章案例 ✨
在上传至交流群的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。
同时,结合提供的免费AI聚合网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。
✨ 购买介绍 ✨
本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到淘宝店铺:Python机器学习AI,或添加作者微信deep_ML联系,购买作者的公众号合集。截至目前为止,合集已包含近300多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用,包括但不限于ChatGPT、Deepseek、Claude等。
更新的内容包含数据、代码、注释和参考资料。 作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤 。 购买前请咨询,避免不必要的问题。
✨ 群友反馈 ✨
✨ 淘宝店铺 ✨
请大家打开淘宝扫描上方的二维码,进入店铺,获取更多Python机器学习和AI相关的内容,或者添加作者微信deep_ML联系 避免淘宝客服漏掉信息 ,希望能为您的学习之路提供帮助!
往期推荐
机器学习在临床数据分析中的应用:从数据预处理到Web应用实现的完整流程教学
期刊配图:PCA、t-SNE与UMAP三种降维方法简化高维数据的展示应用对比
XGBoost模型优化:基于相关系数剔除多重共线性与穷举法进行特征选择
Geographical-XGBoost:一种基于梯度提升树的空间局部回归的新集成模型实现
因果推断:利用EconML实现双重机器学习估计条件平均处理效应 (CATE)
期刊复现:基于XGBoost模型的网页工具SHAP力图解释单样本预测结果
期刊配图:nature cities通过ALE(累积局部效应)解析特征对模型影响
期刊复现:结合因果推断与SHAP可解释性的机器学习实现应用流程
nature communications:基于LightGBM与随机森林结合的多模型特征选择方法
如果你对类似于这样的文章感兴趣。
欢迎关注、点赞、转发~
个人观点,仅供参考