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回调函数的使用方法
Jan 23 Python
python文件和目录操作函数小结
Jul 11 Python
python多重继承新算法C3介绍
Sep 28 Python
python中使用xlrd、xlwt操作excel表格详解
Jan 29 Python
Python中的lstrip()方法使用简介
May 19 Python
Python+tkinter使用80行代码实现一个计算器实例
Jan 16 Python
Python创建一个空的dataframe,并循环赋值的方法
Nov 08 Python
Django Admin中增加导出CSV功能过程解析
Sep 04 Python
基于K.image_data_format() == 'channels_first' 的理解
Jun 29 Python
python批量修改交换机密码的示例
Sep 22 Python
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
Apr 06 Python
Python+SeaTable实现计算两个日期间的工作日天数
Jul 07 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
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
php+mysql实现的无限分类方法类定义与使用示例
2020/05/27 PHP
Javascript中各种trim的实现详细解析
2013/12/10 Javascript
javascript无刷新评论实现方法
2015/05/13 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
2015/08/15 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
Javascript获取图片原始宽度和高度的方法详解
2016/09/20 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
2016/11/29 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
JS实现简单抖动效果
2017/06/01 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
js实现蒙版效果
2020/01/11 Javascript
Python GAE、Django导出Excel的方法
2008/11/24 Python
Python中实现三目运算的方法
2015/06/21 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
Python jieba库用法及实例解析
2019/11/04 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
jupyter notebook读取/导出文件/图片实例
2020/04/16 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
2020/12/03 Python
三星美国官网:Samsung美国
2017/02/06 全球购物
有个性的自我评价范文
2013/11/15 职场文书
洗发露广告词
2014/03/14 职场文书
弘扬民族精神演讲稿
2014/05/07 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
2014校长四风问题对照检查材料思想汇报
2014/09/16 职场文书
出纳试用期工作总结2015
2015/05/28 职场文书
辅导员学期工作总结
2015/08/14 职场文书
创业计划书之甜品店
2019/09/18 职场文书
SONY AN-LP1 短波有源天线放大器
2021/04/22 无线电
swagger如何返回map字段注释
2021/07/03 Java/Android