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 相关文章推荐
Python3通过Luhn算法快速验证信用卡卡号的方法
May 14 Python
Python 功能和特点(新手必学)
Dec 30 Python
Python selenium如何设置等待时间
Sep 15 Python
python爬虫的工作原理
Mar 05 Python
Python实现的生产者、消费者问题完整实例
May 30 Python
python主线程捕获子线程的方法
Jun 17 Python
Python实现绘制双柱状图并显示数值功能示例
Jun 23 Python
django框架模板中定义变量(set variable in django template)的方法分析
Jun 24 Python
Python中的list与tuple集合区别解析
Oct 12 Python
Python三元运算与lambda表达式实例解析
Nov 30 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
Python如何输出整数
Jun 07 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
丧钟首部独立剧集《丧钟:骑士与龙》北美正式开播,场面血腥
2020/04/09 欧美动漫
20个PHP常用类库小结
2011/09/11 PHP
php获取新浪微博数据API实例
2013/11/12 PHP
php创建类并调用的实例方法
2019/09/25 PHP
开发跨浏览器javascript常见注意事项
2009/01/01 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
2013/04/24 Javascript
JS的千分位算法实现思路
2013/07/31 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
jQuery 全选 全部选 反选 实现代码
2016/08/17 Javascript
关于JS中二维数组的声明方法
2016/09/24 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
2016/11/25 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
JavaScript代码实现txt文件的上传预览功能
2018/03/27 Javascript
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
原生JS封装拖动验证滑块的实现代码示例
2020/06/01 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
[02:31]《DAC最前线》之选手酒店现场花絮
2015/01/30 DOTA
python保存字符串到文件的方法
2015/07/01 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
2018/11/23 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
分享一个python的aes加密代码
2020/12/22 Python
Python 生成短8位唯一id实战教程
2021/01/13 Python
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
物业门卫岗位职责
2013/12/28 职场文书
简单的辞职信范文
2014/01/18 职场文书
幼儿园毕业典礼主持词
2014/03/21 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
超市采购员岗位职责
2015/04/07 职场文书
导游词之杭州岳王庙
2019/11/13 职场文书
大型强子对撞机再次重启探索“第五种自然力”
2022/04/29 数码科技
SQL Server使用T-SQL语句批处理
2022/05/20 SQL Server
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS