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实现斐波那契(Fibonacci)函数
Mar 25 Python
python:socket传输大文件示例
Jan 18 Python
python读取文件名称生成list的方法
Apr 27 Python
对pandas中时间窗函数rolling的使用详解
Nov 28 Python
Django组件content-type使用方法详解
Jul 19 Python
python爬虫 模拟登录人人网过程解析
Jul 31 Python
python批量图片处理简单示例
Aug 06 Python
如何利用python给图片添加半透明水印
Sep 06 Python
Tensorflow轻松实现XOR运算的方式
Feb 03 Python
python3连接MySQL8.0的两种方式
Feb 17 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
Python使用graphviz画流程图过程解析
Mar 31 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获取当月最后一天函数分享
2015/02/02 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
PHP常见数组排序方法小结
2018/08/20 PHP
js用图作提交按钮或超连接
2008/03/26 Javascript
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
简单实例处理url特殊符号&amp;处理(2种方法)
2013/04/02 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
AngularJS 基础ng-class-even指令用法
2016/08/01 Javascript
浅谈DOM的操作以及性能优化问题-重绘重排
2017/01/08 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
用户管理的设计_jquery的ajax实现二级联动效果
2017/07/13 jQuery
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
ReactNative之FlatList的具体使用方法
2017/11/29 Javascript
React从react-router路由上做登陆验证控制的方法
2018/05/10 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
使用graphics.py实现2048小游戏
2015/03/10 Python
简单解决Python文件中文编码问题
2015/11/22 Python
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
python lxml中etree的简单应用
2019/05/10 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
Python基于pygame实现单机版五子棋对战
2019/12/26 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
银行会计业务的个人自我评价
2013/11/02 职场文书
大学生创业计划书
2014/08/14 职场文书
老兵退伍标语
2014/10/07 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
文艺演出主持词
2015/07/01 职场文书
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL
Jmerte 分布式压测及分布式压测配置
2022/04/30 Java/Android