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基础教程之lambda表达式使用方法
Feb 12 Python
python使用urllib2实现发送带cookie的请求
Apr 28 Python
Python中函数的参数传递与可变长参数介绍
Jun 30 Python
使用Python神器对付12306变态验证码
Jan 05 Python
深入理解python函数递归和生成器
Jun 06 Python
Python错误: SyntaxError: Non-ASCII character解决办法
Jun 08 Python
Python实现购物系统(示例讲解)
Sep 13 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
Mar 14 Python
python在回调函数中获取返回值的方法
Feb 22 Python
Python第三方包之DingDingBot钉钉机器人
Apr 09 Python
Python爬虫 简单介绍一下Xpath及使用
Apr 26 Python
python和anaconda的区别
May 06 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取得一个类的属性和方法的实现代码
2011/05/22 PHP
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
2011/05/25 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
PHP对象递归引用造成内存泄漏分析
2014/08/28 PHP
PHP并发查询MySQL的实例代码
2017/08/09 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
2009/02/18 Javascript
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
2014/05/28 Javascript
jquery实现鼠标滑过小图时显示大图的方法
2015/01/14 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
Nodejs express框架一个工程中同时使用ejs模版和jade模版
2015/12/28 NodeJs
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
AngularJS指令中的绑定策略实例分析
2016/12/14 Javascript
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
js仿京东放大镜效果
2020/08/09 Javascript
Python实现的弹球小游戏示例
2017/08/01 Python
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
python中文分词教程之前向最大正向匹配算法详解
2017/11/02 Python
对python中执行DOS命令的3种方法总结
2018/05/12 Python
python英语单词测试小程序代码实例
2019/09/09 Python
Python 实现加密过的PDF文件转WORD格式
2020/02/04 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
解决c++调用python中文乱码问题
2020/07/29 Python
Python: glob匹配文件的操作
2020/12/11 Python
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
售后服务科岗位职责范文
2013/11/13 职场文书
民政局副局长民主生活会个人整改措施
2014/10/04 职场文书
党员个人批评与自我批评
2014/10/14 职场文书
民事辩护词范文
2015/05/21 职场文书
MySQL数据库 任意ip连接方法
2022/05/20 MySQL