Python 中的 SHAP 简介

本文中有多篇计划文章,后期会补充相关链接。鉴于公众号内无法后期修改文章,请关注原文链接。

如何创建和解释 SHAP 图:瀑布图、力图、平均 SHAP 图、蜂群图和依赖图

可直接在橱窗里购买,或者到文末领取优惠后购买:

在这里插入图片描述

SHAP 是用于理解和调试模型的最强大的 Python 包。它可以告诉我们每个模型特征对单个预测的贡献。通过汇总 SHAP 值,我们还可以了解多个预测的趋势。只需几行代码,我们就能识别和可视化模型中的重要关系。

我们将介绍用于计算和显示 SHAP 值的代码。其中包括对以下 SHAP 图的解释:

  • Waterfall Plot
  • Force Plot
  • Mean SHAP Plot
  • Beeswarm Plot
  • Dependence Plot

我们针对预测连续目标变量的模型执行此操作。如果你需要分类的解释,日后会专门写相关文章,届时可以参阅 [[二元和多类目标变量的 SHAP]],你可以在 GitHub1 上找到完整的项目。

数据集

为了演示 SHAP 包,我们将使用包含 4,177 个观测值的「鲍鱼数据集」2。下面,你可以看到我们的数据集的快照。鲍鱼是一种贝类美食。我们想使用数据集来预测它们的年龄。更具体地说,我们的目标变量是鲍鱼壳中的环数。我们将使用shell lengthshell diameter 和鲍鱼的 whole weight 等特征。

在这里插入图片描述

在下图中,我们直观地展示了一些特征与目标变量之间的关系。 Shucked weight 是鲍鱼肉的重量(即从壳中取出后的重量)。我们可以看到,去壳重量增加时,环的数量往往会增加。这是有道理的,因为我们认为年龄较大的鲍鱼会更大,肉也更多。

在这里插入图片描述

我们还可视化了鲍鱼的性别,这是一个分类特征。在模型中使用此功能之前,我们需要使用 One-Hot 编码对其进行转换。正如你所看到的,这会导致每个生成的二进制特征都有一个单独的 SHAP 值。这使得很难理解原始分类特征的整体贡献。我们将在后面专门写一篇文章「[[分类特征的 SHAP]]」探讨一种解决方案。

对于最后一点数据探索,我们为连续特征创建一个相关矩阵。 可以看到,我们正在处理高度相关的特征。 长度和直径完全相关。 同样,全重与其他重量测量值也高度相关。 例如肉的重量(去壳重量)和除去肉的外壳重量(外壳重量)。

image-20240727212937534

我们在下面导入必要的 Python 包。我们有一些用于管理和可视化数据的标准库(第 4-9 行)。XGBoost 用于对目标变量进行建模(第 13 行),我们导入一些包来评估我们的模型(第 14 行)。最后,我们导入 SHAP 包(第 16 行)。我们初始化包(第 17 行)。这样我们就可以在笔记本中显示一些 SHAP 图。

import warnings
warnings.filterwarnings("ignore")import pandas as pd
import numpy as npimport matplotlib.pyplot as plt
%matplotlib inline
plt.style.use('default')import seaborn as snsimport xgboost as xgb
from sklearn.metrics import accuracy_score,confusion_matriximport shap
shap.initjs()import os
dp = os.environ.get('pub_data')

建模

我们使用数据探索来指导特征工程。首先,我们从 X 特征矩阵中删除长度和整体重量(第 10-11 行)。我们发现这些与其他特征完美相关。

# import dataset
df = pd.read_csv(dp + 
'Abalone dataset/abalone.data',
names=[
"sex",

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/53700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oceanbase Restore Point实践

官网链接:Restore Point-V3.2.4-OceanBase 数据库文档-分布式数据库使用文档 在很多应用系统中,用户需要查询数据库中的某个时间点,或者特定版本的数据来完成一些数据分析或汇总之类的操作。 OceanBase 数据库在 V2.2.7x 版本中提供了 Restor…

vscode ssh离线远程连接ubuntu调试

遇见问题: 1 ssh连接上无法启动服务器的虚拟环境; 2 ssh连接上启动服务器的虚拟环境后无法打断点; 对于问题需要参考下面连接安装python和debugy的插件拓展,并且配置json文件link。VSCode - 离线安装扩展python插件教程_vscode…

Jupyter Notebook设置代码提示和自动代码补全

算法学习、4对1辅导、论文辅导或核心期刊可以通过公众号滴滴我 文章目录 在使用Jupyter Notebook中,会出现Jupyter不像Pycharm一样,可以 自动补全代码以及 代码方法提示等功能,这时候就需要通过给Jupyter安装插件来进行实现。 执行步骤&#…

EMR Spark-SQL性能极致优化揭秘 Native Codegen Framework

作者:周克勇,花名一锤,阿里巴巴计算平台事业部EMR团队技术专家,大数据领域技术爱好者,对Spark有浓厚兴趣和一定的了解,目前主要专注于EMR产品中开源计算引擎的优化工作。 背景和动机 SparkSQL多年来的性能…

StarRocks Lakehouse 快速入门——Apache Iceberg

导读: StarRocks Lakehouse 快速入门旨在帮助大家快速了解湖仓相关技术,内容涵盖关键特性介绍、独特的优势、使用场景和如何与 StarRocks 快速构建一套解决方案。最后大家也可以通过用户真实的使用场景来了解 StarRocks Lakehouse 的最佳实践&#xff01…

2024国赛数学建模备赛|30种常用的算法模型之最优算法-层次分析法

层次分析法(Analytic Hierarchy Process,简称 AHP)是对一些较为复杂、较为模 糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。它是美 国运筹学家 T. L. Saaty 教授于上世纪 70 年代初期提出的一种简便、灵活…

网络安全服务基础Windows--第13节-加密技术

基本保密通信模型 密码学发展 1. 古典密码学(1949年之前) 主要特点:数据的安全基于算法的保密 ● 在古典密码学中,密码算法通常是通过⼿⼯或机械装置实现的。 ● 数据的安全性主要依赖于算法本身的保密性,即“安…

Return arguments from function calling with OpenAI API when streaming?

题意:在使用OpenAI API进行流式传输时,如何返回函数调用的参数? 问题背景: Ive made a simple OpenAI API example with function calling. Im only using function calling to format the response, Im not calling multiple fu…

一个vue前端的例子(六)如何获取table一行的id

比如我们要删除列表一行 vue中template中的scope到底是个什么&#xff1f;_vue template scope-CSDN博客 <el-button click"edit_tool(scope.$index)" type"warning" icon"el-icon-edit">编辑</el-button> 获取列表下标

Brave编译指南2024 Windows篇:Brave简介(一)

1.引言 随着互联网技术的不断发展&#xff0c;用户对隐私保护和安全性的需求日益增加。传统浏览器在这方面存在诸多不足&#xff0c;而Brave浏览器则通过一系列创新技术和功能&#xff0c;致力于为用户提供更好的隐私保护和浏览体验。Brave不仅屏蔽广告和跟踪器&#xff0c;还…

web项目如何部署到服务器上呢?——麻烦的方法

只需关注web项目如何部署到服务器上&#xff0c;因为服务器运行时就可以访问web项目了。 一、麻烦的方法 1、首先启动服务器 &#xff08;1&#xff09;找到bin文件夹 &#xff08;2&#xff09;双击运行startup.bat文件 &#xff08;3&#xff09;运行之后的界面如下&#…

Dart 3.5更新对普通开发者有哪些影响?

哈喽&#xff0c;我是老刘 Flutter 3.24以及Dart 3.5不久前发布了。 突然觉得时间过得好快。六年前刚开始使用Flutter 1.0的场景还在眼前。 之前写了一篇文章盘点Flutter 3.24的新功能对普通开发者有哪些影响。Flutter 3.24 对普通开发者有哪些影响&#xff1f;https://mp.wei…

vivado 设置物理约束

设置物理约束 在本实验中&#xff0c;您将为CPU网表设计创建物理约束&#xff0c;观察中的操作 GUI转换为Tcl命令。使用Tcl命令&#xff0c;可以轻松编写复杂的操作脚本 用于在流动的不同阶段重复使用。 注意&#xff1a;如果您从实验1继续&#xff0c;并且您的设计已打开&…

Centos7.9 安装Elasticsearch 8.15.1(图文教程)

本章教程,主要记录在Centos7.9 安装Elasticsearch 8.15.1的整个安装过程。 一、下载安装包 下载地址: https://www.elastic.co/cn/downloads/past-releases/elasticsearch-8-15-1 你可以通过手动下载然后上传到服务器,也可以直接使用在线下载的方式。 wget https://artifacts…

【学术会议征稿】2024年智能驾驶与智慧交通国际学术会议(IDST 2024)

2024年智能驾驶与智慧交通国际学术会议(IDST 2024) 2024 International Conference on Intelligent Driving and Smart Transportation 智能驾驶和智慧交通利用新兴技术&#xff0c;使城市出行更加方便、更具成本效益且更安全。在此背景下&#xff0c;由中南大学主办的2024年…

LLMs技术 | 整合Ollama实现本地LLMs调用

前言 近两年AIGC发展的非常迅速&#xff0c;从刚开始的只有ChatGPT到现在的很百家争鸣。从开始的大参数模型&#xff0c;再到后来的小参数模型&#xff0c;从一开始单一的文本模型到现在的多模态模型等等。随着一起进步的不仅仅是模型的多样化&#xff0c;还有模型的使用方式。…

65、Python之函数高级:装饰器实战,通用日志记录功能的动态添加

引言 从系统开发的规范性来说&#xff0c;日志的记录是一个规范化的要求&#xff0c;但是&#xff0c;有些程序员会觉得麻烦&#xff0c;反而不愿意记录日志&#xff0c;还是太年轻了…… 其实&#xff0c;如果个人保护意识稍微强一些&#xff0c;一定会主动进行日志的记录的…

python_openCV_计算图片中的区域的黑色比例

希望对原始图片进行处理&#xff0c;然后计算图片上的黑色和白色的占比 上图&#xff0c; 原始图片 import numpy as np import cv2 import matplotlib.pyplot as pltdef cal_black(img_file):#功能&#xff1a; 计算图片中的区域的黑色比例#取图片中不同的位置进行计算&…

关于武汉芯景科技有限公司的IIC缓冲器芯片XJ4307开发指南(兼容LTC4307)

一、芯片引脚介绍 1.芯片引脚 2.引脚描述 二、系统结构图 三、功能描述 1.总线超时&#xff0c;自动断开连接 当 SDAOUT 或 SCLOUT 为低电平时&#xff0c;将启动内部定时器。定时器仅在相应输入变为高电平时重置。如果在 30ms &#xff08;典型值&#xff09; 内没有变为高…

国产芯片LT9211D:MIPI转LVDS转换器,分辨率高达3840x2160 30Hz,碾压其它同功能芯片

以下为LT9211D&#xff1a;MIPI TO LVDS的芯片简单介绍&#xff0c;供各位参考 Lontium LT9211D是一款高性能MIPI DSI/CSI-2到双端口LVDS转换器。LT9211D反序列化 输入MIPI视频数据&#xff0c;解码数据包&#xff0c;转换格式化的视频数据流到LVDS发射机输出AP与移动显示面板或…