第32步 机器学习分类实战:SHAP

2023-11-15

继续填坑,这回到SHAP,这个是选修,有兴趣可以看看。

我们建立了十个ML模型,如果选出了Xgboost、LightGBM、Catboost这种树模型(大概率也是这些最厉害了),那就可以用SHAP进行模型可视化。

(1)首先,使用pip install shap进行安装,记得是在Anconda Prompt敲入:

(2)然后,我们以Xgboost为例子,开整:

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

dataset = pd.read_csv('X disease code fs.csv')

X = dataset.iloc[:, 1:14].values

Y = dataset.iloc[:, 0].values

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.30, random_state = 666)

from sklearn.preprocessing import StandardScaler

sc = StandardScaler()

X_train = sc.fit_transform(X_train)

X_test = sc.transform(X_test)



import xgboost as xgb

param_grid=[{

            'n_estimators':[35],

            'eta':[0.1],

            'max_depth':[1],

            'gamma':[0],

            'min_child_weight':[5],

            'max_delta_step':[1],

            'subsample':[0.8],

            'colsample_bytree':[0.8],

            'colsample_bylevel':[0.8],

            'reg_lambda':[9],

            'reg_alpha':[5],

            },

           ]

boost = xgb.XGBClassifier()

classifier = xgb.XGBClassifier()

from sklearn.model_selection import GridSearchCV

grid_search = GridSearchCV(boost, param_grid, n_jobs = -1, verbose = 2, cv=10)      

grid_search.fit(X_train, y_train)    

classifier = grid_search.best_estimator_  

classifier.fit(X_train, y_train)

y_pred = classifier.predict(X_test)

y_testprba = classifier.predict_proba(X_test)[:,1]

y_trainpred = classifier.predict(X_train)

y_trainprba = classifier.predict_proba(X_train)[:,1]

from sklearn.metrics import confusion_matrix

cm_test = confusion_matrix(y_test, y_pred)

cm_train = confusion_matrix(y_train, y_trainpred)

print(cm_train)

print(cm_test)

#绘画SHAP相关图:使用前先安装SHAP:pip install shap

import shap

explainer = shap.TreeExplainer(classifier)

shap.initjs()

shap_values = explainer.shap_values(X_train)

shap.summary_plot(shap_values, X_train)

输出如下:

这里的Feature 0 就是当初导入的第一个特征B,从左到右的顺序:

可以和Xgboost自带的重要指数相比较,大同小异:

 

具体理论和解释见以下网址,就不细说了:

SHAP知识点全汇总 - 知乎

https://www.kaggle.com/code/dansbecker/shap-values/tutorial

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第32步 机器学习分类实战:SHAP 的相关文章

  • 更改 Inkscape 的 Python 解释器

    在使用 Inkscape 时 我不断收到错误 这似乎意味着未满足 python 2 vs 3 的期望 尽管我已经安装了它们 例如 当我尝试从模板生成新文档时 我得到 Traceback most recent call last File
  • Python中#和"""注释的区别

    开始用 Python 编程 我看到一些带有注释的脚本 and comments 这两种评论方式有什么区别 最好的事情就是阅读PEP 8 Python 代码风格指南 https www python org dev peps pep 0008
  • 01 无效令牌[重复]

    这个问题在这里已经有答案了 嘿 学习 python3有一段时间了 遇到字典和dictionary name get 方法并尝试获取随机键值 问题 data data get key 1 它有效并且返回 1 但如果我使用data get ke
  • 将 stdout 重定向到 Python 中的文件? [复制]

    这个问题在这里已经有答案了 如何将 stdout 重定向到 Python 中的任意文件 当长时间运行的 Python 脚本 例如 Web 应用程序 从 ssh 会话内启动并处于后台 并且 ssh 会话关闭时 应用程序将引发 IOError
  • Python 中的二进制相移键控

    我目前正在编写一些代码 以使用音频转换通过激光传输消息 文件 和其他数据 我当前的代码使用 python 中 binascii 模块中的 hexlify 函数将数据转换为二进制 然后为 1 发出一个音调 为 0 发出不同的音调 这在理论上是
  • 代理阻止网络套接字?如何绕行

    我有一个用 Python 编写的正在运行的 websocket 服务器 来自https github com opiate SimpleWebSocketServer https github com opiate SimpleWebSoc
  • 打印一个 Jupyter 单元中定义的所有变量

    有没有一种更简单的方法来以漂亮的方式显示单个单元格中定义的所有变量的名称和值 我现在做的方式是这样的 但是当有30个或更多变量时我浪费了很多时间 您可以使用whos http ipython readthedocs io en stable
  • 如何在Python中正确声明ctype结构+联合?

    我正在制作一个二进制数据解析器 虽然我可以依靠 C 但我想看看是否可以使用 Python 来完成该任务 我对如何实现这一点有一些了解 我当前的实现如下所示 from ctypes import class sHeader Structure
  • Python将csv数据导出到文件中

    我有以下运行良好的代码 但我无法修剪数据并将其存储在数据文件中 import nltk tweets love this car this view amazing not looking forward the concert def g
  • 从文档字符串生成 sphinx 文档不起作用

    我有一个具有以下结构的项目 我想保留 my project build here is where sphinx should dump into requirements txt make bat Makefile more config
  • 如何创建指向指针数组的 Python ctypes 指针

    我需要学习如何处理char 在下面的 C 方法中通过 Python ctypes 我通过使用调用其他只需要单个指针的方法做得很好create string buffer 但此方法需要一个指向指针数组的指针 ladybugConvertToM
  • 如何在 Spyder IDE 中安装 Selenium 包

    我刚刚在工作中安装了 Spyder IDE 仅 Spyder 不是整个 Anaconda 并且希望使用 FireFox 自动化我的工作 我的问题是 如何安装 Selenium 软件包 I figured it out Here is ins
  • 如何在 Tkinter 的 Button 小部件中创建多个标签?

    我想知道如何在 Tkinter 中创建具有多个标签的按钮小部件 如下图所示 带有子标签的按钮 https i stack imgur com jOZRw jpg正如您所看到的 在某些按钮中有一个子标签 例如按钮 X 有另一个小标签 A 我试
  • 如何使用 python-gnupg 加密大型数据集而不占用所有内存?

    我的磁盘上有一个非常大的文本文件 假设它是 1 GB 或更多 还假设该文件中的数据有 n每 120 个字符一个字符 我在用python gnupg https pythonhosted org python gnupg 对此文件进行加密 由
  • 对 pandas 数据框中的每一列应用函数

    我如何以更多的熊猫方式编写以下函数 def calculate df columns mean self df means for column in df columns columns tolist cleaned data self
  • 如何在 Pandas 数据框中用 NaN 替换一系列值?

    我有一个巨大的数据框 我应该如何用 NaN 替换一系列值 200 100 数据框 您可以使用pd DataFrame mask https pandas pydata org pandas docs stable generated pan
  • python IDLE shell 似乎无法正确处理一些转义

    例如 b 退格键打印为四元 在下面的示例中显示为 但是 n 换行是可以的 gt gt gt print abc bd abc d gt gt gt print abc nd abc d 我在 Vista pro python 2 7 下运行
  • 如何指定一个变量作为类或类实例的成员变量?

    在最新的 Python 2 7 x 中 给定类定义内的任何成员变量 该成员变量是否始终处于类级别 因为它是由该类的所有实例共享的单个变量 在类的定义中 如何指定 类定义中的哪些成员变量属于该类 因此由该类的所有实例共享 以及 哪些属于该类的
  • Python 中的 C 指针算术

    我正在尝试将一个简单的 C 程序转换为 Python 但由于我对 C 和 Python 都一无所知 这对我来说很困难 我被 C 指针困住了 有一个函数采用 unsigned long int 指针并将其值添加到 while 循环中的某些变量
  • 获取长度为 n 的所有(n-选择-k)组合

    我怎样才能获得长度的所有组合 按顺序 n从数字列表中 例如 给定列表 1 2 3 4 并设置n 3 我怎样才能得到这些结果 1 2 3 1 2 4 1 3 4 2 3 4 For combinations of all possible l

随机推荐

  • 提升页面加载速度的方案

    性能优化是一个庞大而相对复杂的知识 如今互联网发展迅速 市场竞争激烈 在这样的环境下一个网站的性能决定着一个项目的好与坏 为了降低软件项目的跳出率 提高访问速度 减少加载时间 带给用户流畅的终端体验 好的优化是必不可少的 如何判断页面的载入
  • js如\x6C\x69\x6E\x65\x63\x68加密代码解压方法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 解码方法如下 简单 复制下面的代码 保存为 html
  • VMware16安装win7 x64 虚拟机

    文章目录 VMware安装win7操作系统 下载iso镜像文件 新建虚拟机 安装VMware Tools 安装VMware Tools 安装程序无法自动安装VSock驱动程序 必须手动安装此驱动程序 出现安装程序无法自动安装VSock驱动程
  • tomcat应用

    web服务器 web服务器是安装在服务端主机上实现了http协议的软件 也叫http服务器 如微软的IIS 当前排名第一开源免费的Apache 个人认为 凡是实现了应用层协议的软件都可以叫web服务器 如ftp服务器 smtp服务器 只不过
  • C++之异常处理机制

    一 C 异常处理机制是由3个部分组成 检查 try 抛出 throw 和捕捉 catch 把需要检查的语句放在try中 throw用来当出现异常时发生一个异常信息 而catch则用来捕捉异常信息 如果捕捉到了异常信息就处理它 二 1 首先介
  • 5、Java入门教程【循环+条件语句】

    一 循环 java有三种主要的循环结构 while 循环 do while 循环 for 循环 1 while 循环 语法 while 布尔表达式 循环内容 示例 public class Test public static void m
  • break和continue跳出多重循环

    关于break和continue 众所周知 break是跳出当前循环 continue是跳出本次循环 但是在多重循环中 我们可能会模糊概念 break是跳出全部循环还是只是某层循环 gt 跳出的是break所在层的循环即当前循环 结论 只要
  • VueUse中文文档Vue官方工具库

    VueUse官网地址https vueuse org 这里就列举常用工具详情请去官网 查看所有API 浏览器 useFullscreen全屏展示 isFullscreen 当前是否是全屏 toggle 是函数直接调用即可 const isF
  • Visual Studio 2022 创建C++项目

    打开Visual Studio 创建新项目 选择平台 选择空项目 点击下一步 设置项目名称以及指定项目文件位置 点击创建 创建成功后 如下图 在源文件中添加代码文件 写入代码 运行代码 F5 运行结果界面如下图所示
  • c语言模板类,C++类模板(Class Template)

    C 除了支持函数模板 还支持类模板 Class Template 函数模板中定义的类型参数可以用在函数声明和函数定义中 类模板中定义的类型参数可以用在类声明和类实现中 类模板的目的同样是将数据的类型参数化 声明类模板的语法为 templat
  • 深度学习论文精读[9]:PSPNet

    场景解析 scene parsing 是语义分割的一个重要应用方向 区别于一般的语义分割任务 场景解析需要在复杂的自然图像场景下对更庞大的物体类别的每一个像素进行分类 场景解析在自动驾驶和机器人感知等方向应用广泛 但由于自然场景的复杂性 语
  • 在Windows 10上安装TensorFlow及PyCharm开发环境

    有时候在查看官方文档时 常常看到很多的分支 所以作为开发者我们都喜欢把最佳实践总结出来 下面一起来看看如何在Windows 10上安装一个TensorFlow和PyCharm开发环境 安装Anaconda 安装Anaconda以后 即可获得
  • Image Super-Resolution Using Very Deep Residual Channel Attention Networks

    因为我是语义分割方向 对图像超分辨率不了解 这里简单记录一下读论文的收获 论文地址 超分辨率的输入是低分辨率 最终恢复超分辨率图片 作者发现低分辨率的图片拥有丰富的低频细节 对应图像中大块的平坦区域 然而低分辨率的每个通道在处理时候总是平等
  • depot_tools安装过程

    depot tools安装过程 使用torserviseSVN 1 6 6版本 移除其它版本 Install the depot tools Chromium and Chromium OS use a package of scripts
  • 数据结构——线性表(C++)

    一 前言 数据结构在逻辑结构上分为线性和非线性 例如链表 顺序表 串 数组都是线性的 他们的特点就是一对一 而非线性结构比如图和二叉树 他们的对应关系是一对多 多对多 这里介绍线性表的顺序表和链表 循环链表和双向链表 还有双向循环链表 链表
  • 关于springboot profiles

    在项目中会遇到项目环境变量切换到的问题 但是主要配置相同 只想切换部分的配置 可以在application yml配置所有的环境变量 然后在application dev yml配置dev中的环境变量 如果dev中没有配置会读取applic
  • tan x x的matlab求解,matlab画x=tan(x)

    matlab怎么解非线性方程 如tan x 4x x 2 4 equ sym tan x 4 x x 2 4 x solve equ gt gt xx 0再问 这只能求出一个解啊再答 还有其他解吗 matlab 求解tan x x 1 0
  • Rotated_Faster_Rcnn

    rotated faster rcnn 文章目录 训练 rpn head forward train rpn head forward rpn head loss rpn head get bboxes roi head forward t
  • mysql绿色版安装与卸载

    第一步 下载Mysql 官网下载地址 https dev mysql com downloads mysql 1 鼠标滑下来 找到Other Download中的 Windows x86 64 bit ZIP Archive 点击其右边的D
  • 第32步 机器学习分类实战:SHAP

    继续填坑 这回到SHAP 这个是选修 有兴趣可以看看 我们建立了十个ML模型 如果选出了Xgboost LightGBM Catboost这种树模型 大概率也是这些最厉害了 那就可以用SHAP进行模型可视化 1 首先 使用pip insta