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简单实现刷新智联简历
Mar 30 Python
Python实现Sqlite将字段当做索引进行查询的方法
Jul 21 Python
python数据类型_字符串常用操作(详解)
May 30 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
Sep 22 Python
Python3连接SQLServer、Oracle、MySql的方法
Jun 28 Python
Django如何将URL映射到视图
Jul 29 Python
Python实现串口通信(pyserial)过程解析
Sep 25 Python
python如何实现图片压缩
Sep 11 Python
Python logging日志库空间不足问题解决
Sep 14 Python
python 实现弹球游戏的示例代码
Nov 17 Python
python爬虫如何解决图片验证码
Feb 14 Python
python实现商品进销存管理系统
May 30 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数据过滤的方法
2013/10/30 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
浅析iis7.5安装配置php环境
2015/05/10 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
php支付宝在线支付接口开发教程
2016/09/19 PHP
浅谈PHP进程管理
2019/03/08 PHP
关于Jqzoom的使用心得 jquery放大镜效果插件
2010/04/12 Javascript
JavaScript的document对象和window对象详解
2010/12/30 Javascript
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
2011/07/26 Javascript
jquery 无限级下拉菜单的简单实现代码
2014/02/21 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
bootstrap布局中input输入框右侧图标点击功能
2016/05/16 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
JS中动态创建元素的三种方法总结(推荐)
2016/10/20 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
JS得到当前时间的方法示例
2017/03/24 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
2019/02/15 jQuery
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
python网络编程示例(客户端与服务端)
2014/04/24 Python
Python 查看文件的编码格式方法
2017/12/21 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
python cookie反爬处理的实现
2020/11/01 Python
python集合的新增元素方法整理
2020/12/07 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
html5简介及新增功能介绍
2020/05/18 HTML / CSS
Sneaker Studio匈牙利:购买运动鞋
2018/03/26 全球购物
怎么样写好简历中的自我评价
2013/10/25 职场文书
兼职业务员岗位职责
2014/01/01 职场文书
社区道德讲堂实施方案
2014/03/21 职场文书
《将心比心》教学反思
2014/04/08 职场文书
大学活动总结格式
2014/04/29 职场文书
开展创先争优活动总结
2014/08/28 职场文书