python工具dtreeviz决策树可视化和模型可解释性


Posted in Python onMarch 03, 2022

前言:

决策树是梯度提升机和随机森林的基本构建块,在学习这些模型的工作原理和模型可解释性时,可视化决策树是一个非常有帮助。不过,当前的可视化包还很初级,对新手没有多少帮助。

最近逛 Github 时,发现一款非常棒的 dtreeviz 工具库:它用于决策树可视化和模型解释。使用 dtreeviz 可以可视化特征空间如何在决策节点上分割,训练样本如何分布在叶节点中,树如何对特定观察进行预测等等。这些操作对于理解分类或回归决策树的工作方式至关重要。

一、安装

pip install dtreeviz             # install dtreeviz for sklearn
pip install dtreeviz[xgboost]    # install XGBoost related dependency
pip install dtreeviz[pyspark]    # install pyspark related dependency
pip install dtreeviz[lightgbm]   # install LightGBM related dependency

二、用法

dtree:创建决策树可视化的主要功能。给定决策树回归器或分类器,使用 graphviz 创建并返回树可视化。

1.所需的库

导入所需要的基本库

from sklearn.datasets import *
from sklearn import tree
from dtreeviz.trees import *

2.回归决策树

树的默认方向是自上而下,但您可以使用orientation=“LR” 将其更改为从左到右。view() 给出一个带有渲染的 graphviz 对象的弹出窗口。

regr = tree.DecisionTreeRegressor(max_depth=2)
boston = load_boston()
regr.fit(boston.data, boston.target)

viz = dtreeviz(regr,
               boston.data,
               boston.target,
               target_name='price',
               feature_names=boston.feature_names)
              
viz.view()    

python工具dtreeviz决策树可视化和模型可解释性

3.分类决策树

分类树需要class_names 的附加参数,给出类值与类名的映射。

classifier = tree.DecisionTreeClassifier(max_depth=2)  # limit depth of tree
iris = load_iris()
classifier.fit(iris.data, iris.target)

viz = dtreeviz(classifier, 
               iris.data, 
               iris.target,
               target_name='variety',
               feature_names=iris.feature_names, 
               class_names=["setosa", "versicolor", "virginica"]  # need class_names for classifier
              )  
              
viz.view() 

python工具dtreeviz决策树可视化和模型可解释性

4.预测路径

突出显示参数 X 中传递的单个观察的特征值所在的决策节点。给出观察的特征值并突出树用于遍历路径的特征。

regr = tree.DecisionTreeRegressor(max_depth=2)  # limit depth of tree
diabetes = load_diabetes()
regr.fit(diabetes.data, diabetes.target)
X = diabetes.data[np.random.randint(0, len(diabetes.data)),:]  # random sample from training

viz = dtreeviz(regr,
               diabetes.data, 
               diabetes.target, 
               target_name='value', 
               orientation ='LR',  # left-right orientation
               feature_names=diabetes.feature_names,
               X=X)  # need to give single observation for prediction
              
viz.view()  

python工具dtreeviz决策树可视化和模型可解释性

如果只想可视化预测路径,则需要设置参数show_just_path=True

dtreeviz(regr,
        diabetes.data, 
        diabetes.target, 
        target_name='value', 
        orientation ='TD',  # top-down orientation
        feature_names=diabetes.feature_names,
        X=X, # need to give single observation for prediction
        show_just_path=True     
        )

python工具dtreeviz决策树可视化和模型可解释性

5.解释预测路径

这些可视化对于向没有机器学习技能的人解释为什么您的模型做出特定预测很有用。在explain_type=plain_english 的情况下,它在预测路径中搜索并找到特征值范围。

X = dataset[features].iloc[10]
print(X)
Pclass              3.0
Age                 4.0
Fare               16.7
Sex_label           0.0
Cabin_label       145.0
Embarked_label      2.0

print(explain_prediction_path(tree_classifier, X, feature_names=features, explanation_type="plain_english"))
2.5 <= Pclass 
Age < 36.5
Fare < 23.35
Sex_label < 0.5

explain_type=sklearn_default(仅适用于scikit-learn)的情况下,我们可以仅可视化预测路径中涉及的特征的重要性。 特征的重要性是基于杂质的平均减少来计算的。

explain_prediction_path(tree_classifier, X, feature_names=features, explanation_type="sklearn_default")

python工具dtreeviz决策树可视化和模型可解释性

此外我们还可以自定义颜色,比如:

dtreeviz.trees.dtreeviz(regr,
                        boston.data,
                        boston.target,
                        target_name='price',
                        feature_names=boston.feature_names,
                        colors={'scatter_marker': '#00ff00'})

python工具dtreeviz决策树可视化和模型可解释性

 到此这篇关于python工具dtreeviz决策树可视化和模型可解释性的文章就介绍到这了,更多相关python工具dtreeviz内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现Linux下守护进程的编写方法
Aug 22 Python
Python import自定义模块方法
Feb 12 Python
Python编程之多态用法实例详解
May 19 Python
简单介绍使用Python解析并修改XML文档的方法
Oct 15 Python
Python标准库sched模块使用指南
Jul 06 Python
PyQt5每天必学之创建窗口居中效果
Apr 19 Python
Python 利用pydub库操作音频文件的方法
Jan 09 Python
详解python深浅拷贝区别
Jun 24 Python
Python 占位符的使用方法详解
Jul 10 Python
Python的matplotlib绘图如何修改背景颜色的实现
Jul 16 Python
Python如何合并多个字典或映射
Jul 24 Python
python selenium xpath定位操作
Sep 01 Python
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
python机器学习实现oneR算法(以鸢尾data为例)
Mar 03 #Python
详解python的异常捕获
Mar 03 #Python
分享提高 Python 代码的可读性的技巧
Mar 03 #Python
使用python创建股票的时间序列可视化分析
Python Pandas读取Excel日期数据的异常处理方法
pytorch中的torch.nn.Conv2d()函数图文详解
Feb 28 #Python
You might like
thinkPHP模型初始化实例分析
2015/12/03 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
关于js拖拽上传 [一个拖拽上传修改头像的流程]
2011/07/13 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
使用jQuery的attr方法来修改onclick值
2014/07/07 Javascript
基于Jquery easyui 选中特定的tab
2015/11/17 Javascript
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
JS实现拖拽的方法分析
2016/12/20 Javascript
谈谈vue中mixin的一点理解
2017/12/12 Javascript
vue展示dicom文件医疗系统的实现代码
2018/08/27 Javascript
angular中的post请求处理示例详解
2020/06/30 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
python实现SMTP邮件发送功能
2020/06/16 Python
python脚本爬取字体文件的实现方法
2017/04/29 Python
对pandas中apply函数的用法详解
2018/04/10 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
python制作mysql数据迁移脚本
2019/01/01 Python
简单了解python关系(比较)运算符
2019/07/08 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
垃圾回收的优点和原理
2014/05/16 面试题
一套Delphi的笔试题一
2016/02/14 面试题
微笑服务标语
2014/06/24 职场文书
物理学专业求职信
2014/07/04 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
谢师宴家长答谢词
2015/09/30 职场文书
领导干部学习心得体会
2016/01/23 职场文书
2019各种承诺书范文
2019/06/24 职场文书
Python中tkinter的用户登录管理的实现
2021/04/22 Python
Go遍历struct,map,slice的实现
2021/06/13 Golang
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android
win10电脑关机快捷键是哪个 win10快速关机的几种方法
2022/08/14 数码科技