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多年来的性能…

前端框架介绍

前端框架是Web开发中不可或缺的工具,它们通过提供结构化的开发方式、模块化组件、响应式设计以及高效的性能优化,极大地简化了Web应用程序的开发过程。以下是对当前主流及新兴前端框架的详细介绍,这些框架不仅涵盖了广泛的功能,还…

StarRocks Lakehouse 快速入门——Apache Iceberg

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

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

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

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

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

(一)NoSQL之 【Redis配置】

一、非关系型数据库 1.1、什么是非关系数据库 NoSQL(NoSQL Not Only SQL ),意思是“不仅仅是 SQL”,是非关系型数据库的总称。 除了主流的关系型数据库外的数据库,都认为是非关系型。 不需要预先建库建表定义数据存储表结构,每…

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…

Android Radio2.0——设置广播配置标志(一)

在 Android Radio 中,RDS (Radio Data System) 是一种在调频(FM)广播信号中嵌入数字信息的技术,它可以携带额外的数据信息,如电台名称、节目信息等。 一、广播配置设置 在介绍 RDS 广播配置设置前我们先来了解一些常见的 RDS 代码及其含义: AF (Alternative Frequencies…

深入探讨ES6高级特性与实际应用

深入探讨ES6高级特性与实际应用 目录 🌀 生成器(Generators)🔄 迭代器(Iterators)🚀 异步编程🔮 符号(Symbols)🛠️ 类装饰器(Class…

一个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> 获取列表下标

Java 使用 Redis

Java 使用 Redis 1. 引言 Redis 是一个开源的高性能键值对数据库。它支持多种类型的数据结构&#xff0c;如字符串、列表、集合、散列表等&#xff0c;适用于多种场景&#xff0c;如缓存、消息队列等。Java 是一种广泛使用的编程语言&#xff0c;因此在 Java 应用程序中使用 …

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

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

Spark2.x 入门:决策树分类器

一、方法简介 ​ 决策树&#xff08;decision tree&#xff09;是一种基本的分类与回归方法&#xff0c;这里主要介绍用于分类的决策树。决策树模式呈树形结构&#xff0c;其中每个内部节点表示一个属性上的测试&#xff0c;每个分支代表一个测试输出&#xff0c;每个叶节点代…

美术馆订票门票预约展览预约售票订票百度图表计算机毕业设计/springboot/javaWEB/J2EE/MYSQL数据库/vue前后分离小程序

1. 需求分析 首先&#xff0c;明确需求&#xff1a; 功能&#xff1a;门票预约、展览预约、售票、查询等系统&#xff1a;前后端分离的小程序技术栈&#xff1a;Spring Boot (后端)、Vue.js (前端)、MySQL (数据库) 2. 设计系统架构 设计系统的整体架构&#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;并且您的设计已打开&…