python 博弈论 库_6个Python库解释机器学习模型并建立信任

2023-11-17

原标题:6个Python库解释机器学习模型并建立信任

在机器学习模型中建立信任的案例

全球道路上大约有12亿辆汽车。这是一个令人毛骨悚然的问题-您认为实际上有多少驾驶员了解车辆的内部运行情况?

您可能已经猜到了,答案只是少数几个人。我们不需要了解驾驶车辆的内部操作。因此,对于我们大多数人来说,这辆车是一个黑匣子,但它确实为驾驶员做好了工作。但是设计和制造车辆的人呢?他们需要彻底了解来龙去脉。

这正是我们使用机器学习模型的方式。非数据科学的受众通常可能不需要知道机器学习算法是如何工作的,但是我们数据科学家应该!实际上,您经常会遇到客户和利益相关者,要求您对机器学习模型如何达到最终结果进行解释。

数据科学家不能不说自己已经使用了复杂的机器学习模型集合,并且在评估指标(如ROC-AUC得分,准确性,RMSE等)方面取得了出色的表现。您的客户将无法做出该声明的开头或结尾。

在大多数数据科学项目中,我们需要建立可信赖且可解释的机器学习模型在本文中,我们将介绍各种Python库,这些库可用于部分或完全解释机器学习或深度学习模型。

用于构建可解释的机器学习模型的Python库

这是我们将在本文中讨论的6个Python库:

5级酸橙夏普黄砖阿里比清醒的

让我们开始!

1.使用ELI5解释机器学习模型

ELI5是“像我五岁的孩子一样解释”的首字母缩写。这个恰当命名的Python库具有解释大多数机器学习模型的功能。解释机器学习模型有两种主要方法:

全局解释:查看模型的参数并在全局级别确定模型的工作方式本地解释: 查看单个预测并确定导致该预测的特征

对于全局解释,ELI5具有:

eli5 。show_weights (clf )#clf 是拟合的模型

对于本地解释,ELI5具有:

eli5 。show_predictions (clf,X_train.iloc [1],feature_names = list(X.columns))

#clf是拟合的模型

#X_train.iloc [1]是索引1处的记录

#feature_names是列名称/功能的列表

如我们所见,我们仅获得训练数据中第一条记录的预测:

ELI5库的一大亮点是它已经为流行的库提供了支持,例如scikit-learn,XGBoost,Keras等。

我们也可以将ELI5用于文本数据!它有一个用于解释文本分类模型的特殊模块,称为TextExplainer。另一个亮点是格式化程序模块,我们可以在其中生成我们解释的HTML,JSON甚至Pandas数据框版本。这也使得将说明也轻松集成到我们的机器学习管道中。

2.使用LIME解释机器学习模型

考虑一下–您是否愿意从一个随机的人那里观看电影,如果有人推荐,可以观看它?无权利?您将阅读知名电影评论家对电影的评价,然后做出决定。这是因为您信任电影评论家的意见。

同样,根据LIME的作者,用于构建机器学习模型的关键字是trust。

在机器学习模型上获得最佳预测不是最终目标,不是吗?最终目标是根据这些预测做出决策,而这正是人类参与的地方。人类/决策制定者需要信任模型和预测才能做出决策-尤其是在生死攸关的情况下,关注金钱。

LIME(本地可解释模型不可知的解释)背后的思想是提供做出预测的原因。以同一示例为例,如果机器学习模型预测电影将成为大片,则LIME会突出显示电影的特征,这将使它成为超级热门。诸如流派和演员之类的功能可能有助于电影的出色表现,而诸如放映时间,导演之类的其他功能可能会不利于电影。

LIME的创建者概述了必须满足的四个基本准则:

可解释的:根据目标人群的解释必须易于理解局部保真度:解释应该能够解释模型对于单个预测的行为与模型无关:该方法应能够解释任何模型全局角度:在解释模型时应整体考虑

这些是要遵循的极好的标准,我们一般可以将它们用于机器学习模型的可解释性。

使用LIME的语法是:

进口石灰

导入lime.lime_tabular

解释器= lime.lime_tabular.LimeTabularExplainer(np.array(X_train),feature_names,

class_names,categorical_features,mode)

#np.array(X_train):训练数据

#class_names:目标变量(用于回归),目标中的不同类

变量(用于回归)

#categorical_features:列出所有分类的列名

#模式:对于回归问题:“回归”,并且

对于分类问题,“分类

上面的示例适用于表格数据(仅数字或类别)。这是显示多类分类问题的输出的方式:

对于单个预测:

exp = explorer.explain_instance(数据行,预测功能)

exp.as_pyplot_figure()#破坏解释

#data_row:我们要预测的单个测试数据点

#predict_function:预测模型

我们也可以将LIME用于图像和文本数据:

解释器 = lime_image 。LimeImageExplainer ()

# 要么

解释器 = lime_image 。LimeTextExplainer()

以下是可用于图像数据的功能列表:带LIME的图像数据使用文本数据和LIME;文本数据文档

3.使用SHAP解释机器学习模型

“ SHapley Additive exPlanations” Python库(俗称SHAP库)是用于机器学习可解释性的最受欢迎的库之一。SHAP库以Shapley值为核心,旨在解释各个预测。

但是,等等– Shapley的价值观是什么?简而言之,Shapley值是从博弈论得出的,其中我们数据中的每个特征都是一个玩家,而最终的回报就是预测。取决于奖励,Shapley值告诉我们如何在玩家之间公平分配此奖励。

SHAP最好的部分是它为基于树的模型提供了一个特殊的模块。考虑到黑客马拉松和行业中基于树的模型的流行程度,即使考虑相关功能,该模块也可以进行快速计算。

这是如何将SHAP库用于单个预测的基本语法:

进口杂货

#需要在笔记本中加载JS可视化

shap.initjs()

#假设我们正在使用XGBoost

解释器= shap.TreeExplainer(xgb_model)

shap_values = explorer.shap_values(X_train)

shap.force_plot(explainer.expected_value,shap_values [i],features = X_train.loc [i],

feature_names = X_train.columns)

#i:个人记录的ID

尽管SHAP试图解释单个预测,但我们也可以使用它来解释全局预测:

shap.summary_plot(shap_values,features,feature_names)

#features:我们的自变量训练集

#feature_names:上述训练集中的列名列表

4.使用Yellowbrick解释机器学习模型

Yellowbrick库基于scikit-learn和matplotlib库。这使其与大多数scikit-learn的模型兼容。我们甚至可以使用我们在机器学习模型中使用的相同参数(当然是基于scikit-learn)

Yellowbrick使用“可视化工具”的概念。可视化工具是一组工具,可帮助我们考虑各个数据点来可视化数据中的功能。将其视为所有功能的仪表板。Yellowbrick提供的主要展示台是:

等级特征:可视化单个特征及其与其他特征的相关性RadViz Visualizer:可视化类之间的可分离性平行坐标:可视化目标类相对于其他要素的分布PCA投影:使用主成分分析(PCA)可视化组合/更高的尺寸流形可视化:使用流形学习(如t-SNE)可视化数据直接数据可视化/联合绘图可视化器:可视化各个要素与目标变量之间的关系

使用这些可视化工具是一个非常简单的4行过程。语法类似于我们在scikit-learn中使用转换器的方式。

例如:

从 yellowbrick.features 导入 JointPlotVisualizer

visualizer = 关节图可视化器(列= [ 'col1' , 'col2' ])

可视化器。fit_transform (X , y )

可视化工具。显示()

#col1和col2是我们要探讨的2列。

#X是自变量

#y是目标变量

5.使用Alibi解释机器学习模型

Alibi是一个开放源代码Python库,它基于实例的预测解释(在这种情况下,实例表示单个数据点)。该库由不同类型的解释程序组成,具体取决于我们处理的数据类型。这是创作者自己制作的便捷表格:

如您所见,该库基于不同的技术提供了不同类型的Explainer模型。尽管我们不会详细介绍它们,但需要注意的是该库是专门为黑盒模型设计的。本质上,您只需要最后使用模型预测即可使用该库。当我们不想篡改机器学习模型的工作流程时,这特别有用。

安装Alibi会安装许多其他有用的库(作为其依赖项的一部分),例如scikit-learn,Pandas,spaCy,TensorFlow等。这将使其对于深度学习模型特别有用。

这是其中一个解释器的示例(由于我们已经在上面进行了探讨,因此请使用内核SHAP):

从alibi.explainers导入KernelShap

说明者 = KernelShap (prediction_function)

说明者。适合(X_train )

说明= explorer.explain(X_test)

#prediction_function:本predcition功能

#X_train:训练独立变量集

X_test:独立变量的测试集

6.使用Lucid解释机器学习模型

随着深度学习在整个行业中变得越来越主流,解释这些深度学习模型的需求变得迫在眉睫。但是,考虑到我们必须处理的大量功能,这可能会变得特别具有挑战性。

Lucid库旨在通过提供可视化神经网络的工具来填补这一空白。最好的部分?您无需任何预先设置即可可视化神经网络!

由一组研究人员开发并由志愿者维护,Lucid专门致力于使用神经网络和深度学习模型。它由Modelzoo组成,该组件已经预装了各种深度学习模型。

这是可视化神经元的方法(我们采用了Inceptionv1):

导入lucid.modelzoo.vision_models作为模型

从lucid.misc.io导入显示

导入lucid.optvis.objectives作为目标

将lucid.optvis.param导入为param

导入lucid.optvis.render作为渲染

导入lucid.optvis.transform作为转换

#加载模型

模型=模型.InceptionV1()

model.load_graphdef()

#可视化神经元

_ = render.render_vis(模型,层)

#layer可以是Inception模型中的任何层,例如con1d,conv2d,maxpool10等。

我们可以尝试使用不同的参数,例如使用转换后的数据,可视化特定通道的效果等。

Lucid的GitHub存储库包含易于使用的现成的Google Colab笔记本。但是,在潜水之前要注意以下几点:

到目前为止,它们仅与TensorFlow 1.0一起使用尽管笔记本全面地介绍了每个示例,但仍没有像我们上面介绍的库那样丰富的文档来源

尽管有这些限制,Lucid还是一个出色的库,适合希望详细研究神经网络的学生和研究人员。考虑到神经网络和深度学习的普及,这个空间值得一看!

尾注

在这个领域中还有许多非常好的Python库,我恳请您探索它们。随着机器学习和深度学习在该行业中变得越来越主流,对可解释性的需求也随之增加。重要的是将模型所做的预测传达给所有利益相关者,以便做出正确的决策。因此,这些工具和库是工业和研究中小时的需求。

如果您自己使用过上述工具,请在下面的评论部分中分享您的经验和反馈!返回搜狐,查看更多

责任编辑:

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

python 博弈论 库_6个Python库解释机器学习模型并建立信任 的相关文章

  • 【AUTOSAR】CCP协议的代码分析与解读(二)----CCP协议格式和命令代码

    CCP协议介绍 CCP的全称是CAN Calibration Protocol CAN标定协议 是基于CAN总线的ECU标定协议规范 CCP协议遵从CAN2 0通信规范 支持11位标准与29位扩展标识符 CCP通信方式 CCP协议采用主从通
  • 单链表的增删改查

    链表的增 改 查 删 public class LinkLIST int size 节点个数 NewNode head 头节点地址 class NewNode int val 存放具体数据 NewNode next 存下一个节点的地址 pu
  • python全排列库_python——全排列数的生成方式

    问题描述 输入整数N 1 lt N lt 10 生成从1 N所有整数的全排列 输入形式 输入整数N 输出形式 输出有N 行 每行都是从1 N所有整数的一个全排列 各整数之间以空格分隔 各行上的全排列不重复 输出各行遵循 小数优先 原则 在各
  • 基于STM32、OV2640及ESP8266的无线图传

    一 简介 本文利用STM32F407单片机 OV2640摄像机模块以及ESP8266 WIFI模块 并基于C 编写的TCP上位机服务 来实现图像的无线传输 本文受启发于博客 ESP8266 STM32F407 OV7670实现图片传输 在此
  • python3安装pyhanlp (中文自然语言处理的工具包) 超详细。

    第一步 首先要有个python的环境 还得有个java的环境 安装jdk8以上 并配置好环境变量 自己想办法 第二步 下载jpype的安装包 下载完成后切换到下载路径 直接用pip装 pip3 install JPype1 0 6 3 cp
  • 外观(Facade)模式

    什么是 Facade 模式 Facade 外观 模式为子系统中的各类 或结构与方法 提供一个简明一致的界面 隐藏子系统的复杂性 使子系统更加容易使用 出自百度文库 即当子系统复杂或者繁锁时 我们让子系统提供一个窗口 程序中称为接口 其它程序
  • BeanFactory和FactoryBean的区别

    区别 https liayun blog csdn net article details 110391066 BeanFactory是个Factory 也就是IOC容器或对象工厂 而FactoryBean就是个Bean 在Spring中
  • 30个iPhone和iPad应用程序界面设计实例

    6月 5 日消息 据国外媒体报道 在今天的现代技术驱动下 手机行业更多的是迎接着 iPhone 和 iPad 的到来 iPhone 平台是在互联网用户中相当流行 因为它允许他们开发 甚至用很少的编程知识的应用程序设计 苹果提供的应用程序界面
  • windows11如何安装docker desktop

    我们知道docker的安装一般我们是安装在linux系统上的 但是如果你的宿主机是windows 那么你还想装docker 那么就需要现在你的windows上装上虚拟机 虚拟机上装linux操作系统 然后在Linux操作系统上再去安装doc
  • BizTalk2010简介

    绝大多数现代业务流程都或多或少地依赖于其它软件 尽管其中部分流程仅由单个应用程序支持 但其他许多业务流程都依赖于不同的软件系统 在许多情况下 已使用不同的技术在不同时间 不同平台上创建了此软件 若要使这些业务程序实现自动化 则需要连接不同系
  • 大屏可视化关键技术

    大屏可视化的技术中涉及的范围会比较广 拆开来说诸如各种LED视频技术 互联网技术 智能技术 视觉设计技术等等这些技术 都是跟大屏可视化有着千丝万缕断不开的关系 但真正影响到大屏可视化关键技术却在于下面的3点上 大屏可视化关键技术 第1是大数
  • 系统及服务器巡检流程图,业务巡检系统的整体设计和数据流程

    这是学习笔记的第1789篇文章 近期也总结了几篇关于巡检的内容 很多同学也很期待 说业务巡检是一个新概念 想做成什么样子 或者说怎么样做起来更好一些 最近的几篇文章 在这个基础上 我自己也梳理了不少方面的内容 其实发起做这个事情 脑子里面已
  • 机器学习训练营LightGBM学习笔记

    学习知识点概要 1 LightGBM 2 LightGBM的实现 学习内容 1 LightGBM LightGBM可以看作是XGBoost的升级豪华版 在获得与XGBoost近似精度的同时 又提供了更快的训练速度与更少的内存消耗 其优缺点和
  • 在事情没有变得糟糕之前_这是我们没有的问题的糟糕解决方案

    在事情没有变得糟糕之前 最糟糕的代码是什么 不要说JavaScript 它会在你身上成长 不 也不是Perl 好的 所以Perl非常令人讨厌 最糟糕的代码 这是我们不需要的代码 紧接着是几乎有效的代码 然后是无效的代码 几乎可以正常工作的代
  • sim卡安全问题

    USIM 存储支持鉴权密钥K 是整个UMTS安全体系的核心 接受参数有 随机数 RAND 鉴权标志参数 AUTN 并计算生成消息鉴权码 XMAC 响应参数 RES 完整性保护密钥 IK 鉴权密钥 CK GSM的SIM卡仅是一种单应用卡 它仅
  • ora-12542 address in used

    这主要是由于 操作系统的 临时端口 不够用而引起的 一般系统的 临时端口为 1024 5000 这在多用户的环境下 3000多个oracle链接就用光了 由于每个链接断开以后 还要有一个等待时间 例如在 windows 系统中 这个时间是
  • 比亚迪后续车都会搭在鸿蒙系统吗_华为手机也能当车钥匙,搭载鸿蒙系统,5G款比亚迪赶超特斯拉?...

    一直以来 互联网公司在造车这事儿上都被认为不太靠谱 虽然这点可以让下周回国贾跃亭和他的ff91背下锅 但依然改变不了我们造的车还不是那个 味 有时候我们自己也会疑问 为什么我们为啥没有自己的特斯拉 不过这件事情目前来看 似乎已经不是什么难题
  • windows下C盘文件夹管理员权限设置

    我们有时会将一些软件安装在C盘 却发现有时程序对C盘文件增删改操作失败 然后自己手动去执行时也经常弹出 你需要提供管理员权限才能进删除此文件 之类 这很烦 网上有些说法是开启Administrator用户 但是我这种有点洁癖的不喜欢增加一个
  • java b 类型_什么类型的Java类型是“[B”?

    我试图通过Java代码 Hibernate 从MySQL DB获取MD5加密传递 但我不能得到字符串或任何合理的Java类型 我唯一得到的是这个无益的信息 java lang ClassCastException B无法转换为com mys

随机推荐

  • 封装与检测技术

    环氧树脂 环氧树脂是一种高分子聚合物 分子式为 C 11 H 12 O 3
  • 复杂的密码有多重要?实操暴力破解wifi密码......

    暴力破解就是穷举法 将密码字典中每一个密码依次去与握手包中的密码进行匹配 直到匹配成功 注意 私自破解他人WiFi属于违法行为 本教程仅供学习与参考 破解工具 破解工具 kali linux系统 本教程使用的装在物理机的linux系统 虚拟
  • postgresql 中输入逃逸字符\n\r\b\t

    例如 1 建表 create table test a1 text a2 varchar 100 a3 char 200 2 插入数据 使用关键字 E insert into test a1 a2 a3 values E aaa n aaa
  • linux ssh服务是否已经启动?

    linux ssh服务是否已经启动 突然想到 ubuntu貌似默认是不会安装ssh server的 会默认安装ssh client 恍然大悟 是不是因为这个原因 于是查看发现 果然没有安装 下面进行安装openssh server sudo
  • Linux系统常用基本命令总结

    Linux基本命令 Linux的简介 Linux的厂商 Linux的目录结构 基于虚拟机的环境搭建 常用命令与示例 一 文件基本操作命令 1 ls命令 2 pwd命令 3 mkdir命令 4 cd命令 5 touch命令 6 cp命令 7
  • ubuntu13.10 64位系统下载Android源码

    参考http source android com source downloading html进行下载 下载过程中出现的问题参考http blog 163 com aravarcv 126 blog static 12384272820
  • (超级详细)如何在Mac OS上的VScode中配置OpenGL环境并编译

    文章目录 安装环境 下载GLAD与GLFW 一 下载GLAD 二 下载GLFW 项目结构配置 测试程序与项目的编译 测试可执行文件HelloGL 安装环境 机器 macbook air 芯片 M1芯片 arm64 macOS macOS V
  • SHA-256算法实现过程

    整理一下SHA 256的实现步骤 1 定义8个32位常量 h0 0x6a09e667 h1 0xbb67ae85 h2 0x3c6ef372 h3 0xa54ff53a h4 0x510e527f h5 0x9b05688c h6 0x1f
  • 通过Java理解Kruskal算法

    今天 我将解析一段Java代码 该代码实现了Kruskal算法 用于在连通的无向图中找到最小生成树 首先 我们来了解一些关键组件 1 DisjointSet 不相交集 这是Kruskal算法中的辅助数据结构 用于管理不相交集的集合 Find
  • msvcr100.dll丢失的解决方法?三招解决msvcr100.dll丢失问题

    最近我遇到了一个电脑问题 就是在运行某个软件时提示缺少msvcr100 dll文件 起初我并不知道这个文件是什么 也不知道它的作用 但通过一番搜索和了解 我对这个问题有了更深的理解 并且也得到了解决的办法 解决方法一 确保你的两台电脑都是相
  • requests_模拟搜狗翻译

    01笔记 在搜狗翻译的url中 请求的方法是Post 所以我们需要通过requests post方法来请求数据 接着url的请求参数是一个字典 所以我们需要修改该字典参数的搜索关键词 且其他参数需复制请求 否则请求不到数据 最后该url返回
  • PyTorch 2.0来了!100%向后兼容,一行代码训练提速76%

    编辑 机器之心 点击下方卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 全栈算法 技术交流群 PyTorch 官方 我们这次的新特性太好用了 所以就直接叫 2 0 了 前段时间 PyTorch 团队在官
  • Altium Designer-Net has no driving source警告消除的方法

    1 其实这个警告原因是 你图中有一个器件的管脚有属性 如I O 并且这个管脚设定了驱动源 你先从元件库中 找到这个管脚 把管脚的属性 改成下面图片 的这个样子 就好了 2 下面这种方法 只是快速 逃避警告 也是可以通过编译的 在进行原理图编
  • 爬取豆瓣电影数据并进行分析可视化

    学习爬虫爬取豆瓣电影数据并进行分析 整体流程如下 1 爬取豆瓣电影数据 2 读取豆瓣电影数据 3 统计各个电影的评论数 4 读取某个电影的全部评论内容 5 获取某个电影的关键词并生成词云图 6 对电影数据的关键词和评分进行辩证分析并生成热力
  • linux设备号

    什么是设备号 linux中设备号是用来标记一类设备以及区分这类设备中具体个体的一组号码 由主设备号和次设备号组成 主设备号用来标记设备的类型 次设备号用来区分在这类设备中具体的个体设备 为什么用设备号 我们知道 linux下一切皆文件 li
  • CentOS 8.5:mysql8 + php8 使用 phpmyadmin52

    使用 dnf 安装命令没有安装成功 下载安装 phpmyadmin 下载地址 最新版本为 5 2 phpMyAdmin Downloads etc nginx nginx conf 中的配置内容 server listen 80 liste
  • VS Code的神级插件Bito - GPT-4 和 ChatGPT 编写代码、解释代码、创建测试

    Bito是什么 Bito是一款插件 它目前支持VS Code Chrome插件 以及Jetbrains的全系列IDE 例如 IDEA PyCharm Clion等 可以说能够覆盖大部分开发同学了 Bito 通过将 GPT 4 和 ChatG
  • KMP算法理解

    学习了KMP算法 对此有了一些理解 通过博客分享 如有理解错误的地方 请纠正 文章目录 字符串的前缀后缀 最大公共长度数组获取 KMP算法 时间复杂度 字符串的前缀后缀 再说明KMP算法前见说下它用到的一些东西 给定一个字符串如 ABCDA
  • 1.机器学习的基础概念

    机器学习的基础概念 文章目录 机器学习的基础概念 机器学习的分类 一 监督学习 1 监督学习概念 2 监督学习流程 3 监督学习算法 二 无监督学习 1 无监督学习概念 2 无监督学习流程 3 无监督学习算法 总结 机器学习的分类 机器学习
  • python 博弈论 库_6个Python库解释机器学习模型并建立信任

    原标题 6个Python库解释机器学习模型并建立信任 在机器学习模型中建立信任的案例 全球道路上大约有12亿辆汽车 这是一个令人毛骨悚然的问题 您认为实际上有多少驾驶员了解车辆的内部运行情况 您可能已经猜到了 答案只是少数几个人 我们不需要