python机器学习Github已达8.9Kstars模型解释器LIME


Posted in Python onNovember 23, 2021

简单的模型例如线性回归,LR等模型非常易于解释,但在实际应用中的效果却远远低于复杂的梯度提升树模型以及神经网络等模型。

现在大部分互联网公司的建模都是基于梯度提升树或者神经网络模型等复杂模型,遗憾的是,这些模型虽然效果好,但是我们却较难对其进行很好地解释,这也是目前一直困扰着大家的一个重要问题,现在大家也越来越加关注模型的解释性。

本文介绍一种解释机器学习模型输出的方法LIME。它可以认为是SHARP的升级版,Github链接:https://github.com/marcotcr/lime,有所收获多多支持

LIME

LIME(Local Interpretable Model-agnostic Explanations)支持的模型包括:

  • 结构化模型的解释;
  • 文本分类器的解释;
  • 图像分类器的解释;

LIME被用作解释机器学习模型的解释,通过LIME我们可以知道为什么模型会这样进行预测。

本文我们就重点观测一下LIME是如何对预测结果进行解释的。

代 码

此处我们使用winequality-white数据集,并且将quality<=5设置为0,其它的值转变为1.

# !pip install lime
import pandas as pd
from xgboost import XGBClassifier
import shap
import numpy as np
from sklearn.model_selection import train_test_split
df = pd.read_csv('./data/winequality-white.csv',sep = ';')
df['quality'] = df['quality'].apply(lambda x: 0 if x <= 5 else 1)
df.head()

python机器学习Github已达8.9Kstars模型解释器LIME

# 训练集测试集分割
X = df.drop('quality', axis=1)
y = df['quality'] 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
# 模型训练
model = XGBClassifier(n_estimators = 100, random_state=42)
model.fit(X_train, y_train)
score = model.score(X_test, y_test)
score

The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. 0.832653061224489

对单个样本进行预测解释

下面的图中表明了单个样本的预测值中各个特征的贡献。

import lime
from lime import lime_tabular
explainer = lime_tabular.LimeTabularExplainer(
    training_data=np.array(X_train),
    feature_names=X_train.columns,
    class_names=['bad', 'good'],
    mode='classification'
)

模型有84%的置信度是坏的wine,而其中alcohol,totals ulfur dioxide是最重要的。

python机器学习Github已达8.9Kstars模型解释器LIME

import lime
from lime import lime_tabular
explainer = lime_tabular.LimeTabularExplainer(
    training_data=np.array(X_train),
    feature_names=X_train.columns,
    class_names=['bad', 'good'],
    mode='classification'
)

模型有59%的置信度是坏的wine,而其中alcohol,chlorides, density, citric acid是最重要的预测参考因素。

python机器学习Github已达8.9Kstars模型解释器LIME

exp = explainer.explain_instance(data_row=X_test.iloc[1], predict_fn=model.predict_proba)
exp.show_in_notebook(show_table=True)

适用问题

LIME可以认为是SHARP的升级版,它通过预测结果解释机器学习模型很简单。它为我们提供了一个很好的方式来向非技术人员解释地下发生了什么。您不必担心数据可视化,因为LIME库会为您处理数据可视化。

参考链接

https://www.kaggle.com/piyushagni5/white-wine-quality
LIME: How to Interpret Machine Learning Models With Python
https://github.com/marcotcr/lime
https://mp.weixin.qq.com/s/47omhEeHqJdQTtciLIN2Hw

以上就是Github已达8.9Kstars的最佳模型解释器LIME的详细内容,更多关于模型解释器LIME的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python的re模块应用实例
Sep 26 Python
轻松实现TensorFlow微信跳一跳的AI
Jan 05 Python
django数据库migrate失败的解决方法解析
Feb 08 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
May 24 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
Jul 31 Python
Pycharm 安装 idea VIM插件的图文教程详解
Feb 21 Python
使用 pytorch 创建神经网络拟合sin函数的实现
Feb 24 Python
Python面向对象程序设计之继承、多态原理与用法详解
Mar 23 Python
Python调用.net动态库实现过程解析
Jun 05 Python
python中count函数知识点浅析
Dec 17 Python
Python使用Kubernetes API访问集群
May 30 Python
Python道路车道线检测的实现
Jun 27 Python
如何在python中实现ECDSA你知道吗
Python jiaba库的使用详解
Nov 23 #Python
python 中的jieba分词库
Nov 23 #Python
python周期任务调度工具Schedule使用详解
Nov 23 #Python
python百行代码实现汉服圈图片爬取
python可视化大屏库big_screen示例详解
python数据可视化JupyterLab实用扩展程序Mito
You might like
屏蔽浏览器缓存另类方法
2006/10/09 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
php函数连续调用实例分析
2015/07/30 PHP
php简单实现短网址(短链)还原的方法(测试可用)
2016/05/09 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
2016/05/30 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
2020/04/13 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
jquery 与NVelocity 产生冲突的解决方法
2011/06/13 Javascript
js中运算符&amp;&amp; 和 || 的使用记录
2014/08/21 Javascript
jQuery.each使用详解
2015/07/07 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
React-intl 实现多语言的示例代码
2017/11/03 Javascript
红黑树的插入详解及Javascript实现方法示例
2018/03/26 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
2018/07/13 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
详解Python中expandtabs()方法的使用
2015/05/18 Python
在Django框架中设置语言偏好的教程
2015/07/27 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
使用Python实现从各个子文件夹中复制指定文件的方法
2018/10/25 Python
详解python中自定义超时异常的几种方法
2019/07/29 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
SQL Server里面什么样的视图才能创建索引
2015/04/17 面试题
《小猫刮胡子》教学反思
2014/02/21 职场文书
硕士研究生就业推荐信
2014/05/18 职场文书
2014市国税局对照检查材料思想汇报
2014/09/23 职场文书
带香烟到学校抽的检讨书
2014/09/25 职场文书
交通事故被告代理词
2015/05/23 职场文书
五年级作文之成长
2019/09/16 职场文书
win10拖拽文件时崩溃怎么解决?win10文件不能拖拽问题解决方法
2022/08/14 数码科技