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 不关闭控制台的实现方法
Oct 23 Python
Python多线程实例教程
Sep 06 Python
python实现数值积分的Simpson方法实例分析
Jun 05 Python
Python序列化基础知识(json/pickle)
Oct 19 Python
解决DataFrame排序sort的问题
Jun 07 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
python 求某条线上特定x值或y值的点坐标方法
Jul 09 Python
Django中URL的参数传递的实现
Aug 04 Python
关于PyTorch 自动求导机制详解
Aug 18 Python
浅谈在django中使用redirect重定向数据传输的问题
Mar 13 Python
Python如何生成xml文件
Jun 04 Python
numpy中生成随机数的几种常用函数(小结)
Aug 18 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 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
eAccelerator的安装与使用详解
2013/06/13 PHP
ThinkPHP使用Smarty第三方插件方法小结
2016/03/19 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
php实现大文件断点续传下载实例代码
2019/10/01 PHP
flash javascript之间的通讯方法小结
2008/12/20 Javascript
jQuery插件原来如此简单 jQuery插件的机制及实战
2012/02/07 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
JS实现微信摇一摇原理解析
2017/07/22 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
从0到1构建vueSSR项目之路由的构建
2019/03/07 Javascript
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python筛选出两个文件中重复行的方法
2018/05/31 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
2019/08/28 Python
Python 私有化操作实例分析
2019/11/21 Python
Python PyQt5模块实现窗口GUI界面代码实例
2020/05/12 Python
Pytest如何使用skip跳过执行测试
2020/08/13 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
韩国江南富人区高端时尚百货商场:Galleria(格乐丽雅)
2018/03/27 全球购物
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
介绍一下gcc特性
2012/01/20 面试题
英语专业毕业生求职信
2014/05/24 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
就业导师推荐信范文
2015/03/27 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
2015年林业工作总结
2015/05/14 职场文书
摩登时代观后感
2015/06/03 职场文书
民主生活会意见
2015/06/05 职场文书