当前位置: 首页 > news >正文

Python Day23 学习

继续SHAP图绘制的学习

1. SHAP特征重要性条形图

特征重要性条形图(Feature Importance Bar Plot)是 SHAP 提供的一种全局解释工具,用于展示模型中各个特征对预测结果的重要性。以下是详细解释:

图的含义
- 横轴:表示特征的重要性,通常是特征的 SHAP 值的平均绝对值(`mean(|SHAP value|)`)。
  - SHAP 值的绝对值越大,说明该特征对模型预测的影响越大。
  - 通过取绝对值,可以忽略正负方向,只关注特征对预测结果的贡献大小。
- 纵轴:表示特征名称,按重要性从高到低排序。
  - 排在顶部的特征对模型预测的整体影响最大。

代码实现:

# --- 1. SHAP 特征重要性条形图 (Summary Plot - Bar) ---
print("--- 1. SHAP 特征重要性条形图 ---")
shap.summary_plot(shap_values[:, :, 0], X_test, plot_type="bar",show=False)  #  这里的show=False表示不直接显示图形,这样可以继续用plt来修改元素,不然就直接输出了
plt.title("SHAP Feature Importance (Bar Plot)")
plt.show()

对以下部分代码再进行理解:

shap_values[:, :, 0]

生成图像:

2. SHAP特征重要性蜂巢图

特征重要性蜂巢图(Feature Importance Violin Plot)是 SHAP 提供的一种全局解释工具,用于展示每个特征对模型预测的影响分布情况。以下是详细介绍:


图的含义

  • 横轴SHAP 值,表示特征对模型预测的影响大小和方向

    • 正值:该特征对预测结果有正向影响(推动预测值增大)。
    • 负值:该特征对预测结果有负向影响(推动预测值减小)。
  • 纵轴特征名称,按重要性从高到低排序。

    • 排在顶部的特征对模型预测的整体影响最大。
  • 颜色通常表示特征值的大小(如红色表示特征值较大,蓝色表示特征值较小)。

  • 形状(蜂巢/小提琴形状)表示 SHAP 值的分布。

    • 宽度:表示该特征的 SHAP 值在某个范围内的密度(样本数量)。
    • 宽度越大,说明更多样本的 SHAP 值集中在该范围。

图的作用

  • 全局解释:蜂巢图展示了每个特征对模型预测的影响分布,帮助我们理解特征的重要性和影响方向。
  • 特征与预测的关系
    • 通过颜色和 SHAP 值的分布,可以直观地观察特征值大小与预测结果之间的关系。
    • 例如,红色(特征值大)集中在正 SHAP 值区域,说明特征值越大,对预测结果的正向影响越大。
  • 异常值检测:如果某些特征的 SHAP 值分布异常(如极端值),可能需要进一步检查数据或模型。

特征重要性蜂巢图是 SHAP 的全局解释工具,通过展示每个特征的 SHAP 值分布,帮助我们理解特征对模型预测的影响大小、方向和分布情况。它比条形图提供了更丰富的信息,尤其适合分析特征值与预测结果之间的关系。

代码实现:

# --- 2. SHAP 特征重要性蜂巢图 (Summary Plot - Violin) ---
print("--- 2. SHAP 特征重要性蜂巢图 ---")
shap.summary_plot(shap_values[:, :, 0], X_test,plot_type="violin",show=False,max_display=10) # 这里的show=False表示不直接显示图形,这样可以继续用plt来修改元素,不然就直接输出了
plt.title("SHAP Feature Importance (Violin Plot)")
plt.show()
# 注意下上面几个参数,plot_type可以是bar和violin,max_display表示显示前多少个特征。

生成图像:

今日学习到这里,明日自己练习一下SHAP图的绘制,再进行新内容的学习。继续加油!!!

@浙大疏锦行

相关文章:

  • [笔记]几起风电结构失效案例与简单分析
  • zst-2001 历年真题 信息安全
  • Wi-Fi网络角色及功能详解
  • 八、基于HAL库,实现printf()打印调试函数
  • LeetCode[101]对称二叉树
  • vscode 默认环境路径
  • 【漫话机器学习系列】254.假设空间(Hypothesis Space)
  • 常用的设计模式详解
  • vim中的查找
  • 《棒球百科》MLB棒球公益课·棒球1号位
  • 1. 使用 IntelliJ IDEA 创建 React 项目:创建 React 项目界面详解;配置 Yarn 为包管理器
  • 1.10-数据传输格式
  • 《飞飞重逢》手游:暴力治疗与团队赋能的战场艺术!
  • [特殊字符] 本地部署DeepSeek大模型:安全加固与企业级集成方案
  • hashicorp raft源码分析(一、项目介绍与Leder选举实现)
  • Excel使用VBA批量计算指定列的中位数和标准差并筛选指定列数据
  • GBK与UTF-8编码问题(1)
  • 如何使用 Winget 命令安装 Microsoft Teams
  • C盘扩容方法:如何扩展不相邻的分区?
  • 交易流水表的分库分表设计
  • 字母哥动了离开的心思,他和雄鹿队的缘分早就到了头
  • 警方通报:某博主遭勒索后自杀系自导自演,已立案调查
  • 最美西游、三星堆遗址等入选“2025十大年度IP”
  • 陈宝良 高寿仙 彭勇︱明清社会的皇权、商帮与市井百态
  • 巴基斯坦外长:印巴已同意立即停火
  • 重庆大学:对学术不端行为“零容忍”,发现一例、查处一例