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捕捉和模拟鼠标事件的方法
Jun 03 Python
在Python的Django框架中使用通用视图的方法
Jul 21 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
Dec 15 Python
python如何派生内置不可变类型并修改实例化行为
Mar 21 Python
使用pandas读取csv文件的指定列方法
Apr 21 Python
python MNIST手写识别数据调用API的方法
Aug 08 Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 Python
python之列表推导式的用法
Nov 29 Python
Python箱型图处理离群点的例子
Dec 09 Python
pytorch实现onehot编码转为普通label标签
Jan 02 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
Mar 19 Python
Pycharm 设置默认解释器路径和编码格式的操作
Feb 05 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
索尼SONY ICF-SW7600GR电路分析与改良
2021/03/02 无线电
PHP读取目录下所有文件的代码
2008/01/07 PHP
php数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
PHP实现的策略模式示例
2019/03/20 PHP
jQuery TextBox自动完成条
2009/07/22 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
ie下$.getJSON出现问题的解决方法
2014/02/12 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
浅析JavaScript作用域链、执行上下文与闭包
2016/02/01 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
2017/09/27 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
2018/03/07 Javascript
浅析Python中的多重继承
2015/04/28 Python
Python的socket模块源码中的一些实现要点分析
2016/06/06 Python
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
Python subprocess模块详细解读
2018/01/29 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
python将字符串转换成json的方法小结
2019/07/09 Python
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
银行办公室岗位职责
2014/03/10 职场文书
项目合作协议书范本
2014/04/16 职场文书
初中英语课后反思
2014/04/25 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
党的群众路线教育实践活动个人整改落实情况汇报
2014/10/28 职场文书
退学证明范本3篇
2014/10/29 职场文书
学校拾金不昧表扬信
2015/01/16 职场文书
2015年社区矫正工作总结
2015/04/21 职场文书
校运会新闻稿
2015/07/17 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
Pytorch DataLoader shuffle验证方式
2021/06/02 Python
mysql联合索引的使用规则
2021/06/23 MySQL
MySQL七种JOIN类型小结
2021/10/24 MySQL