我们知道,人工智能也可能存在偏差,随着大家对这一点的关注度越来越高,企业越来越需要能够对其模型产生的预测进行解释,了解模型本身是如何工作的。好的一点是,有越来越多的Python库正在开发中,试图解决这个问题。在这篇文章中,笔者将简要介绍四个最成熟的机器学习模型解释软件包。

下面的库都是可以通过pip安装的,有非常友好的说明文档,并且在对解释进行可视化方面做了很多工作。

Yellowbrick

这个库本质上是scikit-learn库的一个扩展,它为机器学习模型提供了一些非常有用且好看的可视化效果。Visualiser对象——即核心接口——是scikit-learn估计器,因此如果你习惯使用scikit-learn,那么对这个工作流程应该非常熟悉。

可以呈现的可视化包括模型选择、特征重要性和模型性能分析。

让我们看几个简单的例子。

该库可以通过pip安装。

为了说明某些特性,我将使用一个红酒识别的scikit-learn数据集。这个数据集有13个特性和3个目标类,可以直接从scikit-learn库加载。在下面的代码中,我导入数据集并将其转换为数据帧。数据可以在分类器中使用,而不需要任何额外的预处理。

我还使用scikit-learn将数据集进一步分解为测试和训练。

接下来,让我们使用Yellowbricks visualiser查看数据集中的特性之间的关联。

现在让我们安装一个随机森林分类器,并用另一个visualiser评估性能。

ELI5

ELI5是另一个可视化库,用于调试机器学习模型并解释它们所生成的预测。它与最常见的Python机器学习库协同工作,包括scikit-learn、XGBoost和Keras。下面我们使用ELI5来检查我们上面训练的模型的特性重要性。

默认情况下,show_weights方法使用gain来计算权重,但是您可以通过添加importance_type参数来指定其他类型。

您还可以使用show_prediction 检查单个预测的原因。

LIME

LIME(local interpretable model-agnostic explanations,与本地可解释模型无关的解释)是一个用来解释机器学习算法做出的预测的软件包。LIME支持从广泛的分类器中解释单个预测,并且内置了对scikit-learn的支持。

让我们使用LIME来解释我们之前训练的模型中的一些预测。

LIME可以通过pip安装。

首先,我们建立解释器。这将训练数据集作为一个数组,模型中使用的特征的名称以及目标变量中类的名称。

接下来,我们创建一个lambda函数,它使用模型对数据样本进行预测。这是借用了这个优秀的、更深入的LIME教程。

然后,我们使用解释器对选定的示例进行预测解释。结果如下所示,Lime生成了一个可视化视图,显示了这些特性是如何对这个特定的预测做出贡献的。

MLxtend

这个库包含许多机器学习的辅助函数,包括叠加和投票分类器、模型评估、特征提取以及工程和绘图。除了文档之外,这个论文也是一个很好的资源,可以让您更详细地了解这个包。

下面我们使用MLxtend来比较投票分类器与其组成分类器的决策边界。

同样,它可以通过pip安装。

我使用的导入如下所示。

下面的可视化一次只能处理两个特性,因此我们将首先创建一个包含特性proline和color_intensity的数组。选择这些是因为它们在我们之前使用ELI5检查的所有特性中具有最高的权重。

接下来,我们创建分类器,将它们与训练数据相匹配,并使用MLxtend将决策边界可视化,输出如下代码所示。

用于可视化和解释机器学习模型的库当然不止以上几个,这里罗列了其他一些有用的库。

原文作者:Rebecca Vickery

python 分类变量xgboost_用于可解释机器学习的四个Python库相关推荐

  1. python 分类变量xgboost_如何用XGBoost做时间序列预测?

    作者:Jason Brownlee翻译:wwl校对:王雨桐本文约3300字,建议阅读10分钟本文介绍了如何用XGBoost做时间序列预测,包括将时间序列转化为有监督学习的预测问题,使用前向验证来做模型 ...

  2. python 分类变量xgboost_【转】XGBoost参数调优完全指南(附Python代码)

    xgboost入门非常经典的材料,虽然读起来比较吃力,但是会有很大的帮助: 英文原文链接:https://www.analyticsvidhya.com/blog/2016/03/complete-g ...

  3. 用于可解释机器学习的 Python 库

    由于对人工智能偏见的担心日益凸显,从业者解释模型产出的预测结果的能力以及解释模型自身运作机制的能力变的越来越重要.幸运的是,已经有许多python工具集被开发出来,用以解决上述问题.下文我将对现有4个 ...

  4. python 分类变量转为哑变量_机器学习笔记——哑变量处理

    在机器学习的特征处理环节,免不了需要用到类别型特征,这类特征进入模型的方式与一般数值型变量有所不同. 通常根据模型的需要,类别型特征需要进行哑变量处理,即按照特征类别进行编码,一般一个类别为k的特征需 ...

  5. python 分类变量编码_深度学习编码分类变量的3种方法——AIU人工智能学院

    :数据科学.人工智能从业者的在线大学. 数据科学(Python/R/Julia) 作者 | CDA数据分析师 像Keras中的机器学习和深度学习模型一样,要求所有输入和输出变量均为数字. 这意味着,如 ...

  6. python分类变量相关性分析_Python数据科学:相关分析

    目前手上有两本书,一本<利用Python进行数据分析>,一本<Python数据科学>.app 对于学习什么东西,都有它的「道」和「术」.「道」即原理,「术」即技巧.dom 经过 ...

  7. python 分类变量转因子变量_python – 将分类变量的Pandas DataFrame转换为具有计数和比例的MultiIndex...

    我有一个包含几个分类变量的Pandas DataFrame.例如: import pandas as pd d = {'grade':['A','B','C','A','B'], 'year':['2 ...

  8. python 分类变量转为哑变量_Python中的虚拟变量(dummyvariables)

    虚拟变量(dummy variables) 虚拟变量,也叫哑变量和离散特征编码,可用来表示分类变量.非数量因素可能产生的影响. ① 离散特征的取值之间有大小的意义 例如:尺寸(L.XL.XXL) 离散 ...

  9. python分类变量相关性分析_如何在python中检查连续变量和分类变量之间的相关性?...

    将分类变量转换为伪变量here,并将变量放入numpy.array中.例如: data.csv:age,size,color_head 4,50,black 9,100,blonde 12,120,b ...

最新文章

  1. @Ignore_JUnit - Ignore Test
  2. metasploit 漏洞评级翻译
  3. Git 存储原理及相关实现
  4. 本地调试微信程序ngrok
  5. 代码块是什么?该如何使用?
  6. JAVA minaio模型_Mina的线程模型
  7. android反编译工具手机,安卓apk反编译工具包
  8. 【安全测试】AppScan:下载与安装
  9. 【Windows远程桌面】RDP Wrapper 监听器状态为 Not listening [not supported] 的解决方法
  10. 使用好压(HaoZip)软件打包EverEdit制作安装程序
  11. java字符串以什么结尾_java怎么判断一个字符串以什么结尾
  12. leetcode:Removenbsp;Elementnbsp;+nbsp;nbsp;Imple…
  13. 「数据架构」介绍下一代主数据管理(MDM)
  14. CF869 E. The Untended Antiquity 二位树状数组+hash
  15. 导出word功能,用html代码在word中插入分页符
  16. 汽车电子功能安全标准ISO26262解析(四)——FMEDA
  17. Deep Mutual Learning
  18. python中sep的用法:逗号的去除
  19. 世界国家中英文对照表(json格式)
  20. Python 表示无穷大的数

热门文章

  1. 一种使用SOC精确控制脉冲的方法
  2. CI中创建你自己的类库
  3. python3解析库pyquery
  4. MySQL外键约束_ON DELETE CASCADE/ON UPDATE CASCADE
  5. MyBatis学习总结_03_优化MyBatis配置文件中的配置
  6. 【数据结构】线段树(interval tree)
  7. 并发编程 07—— 任务取消
  8. 来电振铃时按音量键静音
  9. document.execCommand()的用法小记
  10. eclipse,myeclipse,Tomcat进行JSP开发配置