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 相关文章推荐
web.py获取上传文件名的正确方法
Aug 26 Python
Python中使用PyQt把网页转换成PDF操作代码实例
Apr 23 Python
python一键升级所有pip package的方法
Jan 16 Python
Python中工作日类库Busines Holiday的介绍与使用
Jul 06 Python
在Python中执行系统命令的方法示例详解
Sep 14 Python
Python pyinotify模块实现对文档的实时监控功能方法
Oct 13 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
Dec 12 Python
python使用 __init__初始化操作简单示例
Sep 26 Python
python爬虫用request库处理cookie的实例讲解
Feb 20 Python
Python 使用dict实现switch的操作
Apr 07 Python
浅谈Python数学建模之数据导入
Jun 23 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
Apr 02 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
利用PHP+JS实现搜索自动提示(实例)
2013/06/09 PHP
浅析十款PHP开发框架的对比
2013/07/05 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
二行代码解决全部网页木马
2008/03/28 Javascript
js函数般调用正则
2008/04/08 Javascript
显示js对象所有属性和方法的函数
2009/10/16 Javascript
Jquery公告滚动+AJAX后台得到数据
2011/04/14 Javascript
jQuery EasyUI API 中文文档 - NumberBox数字框
2011/10/13 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
jQuery拖动图片删除示例
2013/05/10 Javascript
Javascript中使用parseInt函数需要注意的问题
2015/04/02 Javascript
简单实现的JQuery文本框水印插件
2016/06/14 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
JS中input表单隐藏域及其使用方法
2017/02/13 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
详解nodejs微信公众号开发——2.自动回复
2017/04/10 NodeJs
angularJs的ng-class切换class
2017/06/23 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
[01:57]2018DOTA2亚洲邀请赛赛前采访-iG
2018/04/03 DOTA
python 根据正则表达式提取指定的内容实例详解
2016/12/04 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
2020/07/28 Python
Python paramiko使用方法代码汇总
2020/11/20 Python
澳大利亚小众服装品牌:Maurie & Eve
2018/03/27 全球购物
理肤泉俄罗斯官网:La Roche-Posay俄罗斯
2018/07/24 全球购物
爱心倡议书范文
2014/05/12 职场文书
店铺转让协议书(2014版)
2014/09/23 职场文书
教师学习群众路线心得体会
2014/11/04 职场文书
违规违纪检讨书范文
2015/05/06 职场文书
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python