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牛刀小试密码爆破
Feb 03 Python
Python MySQLdb模块连接操作mysql数据库实例
Apr 08 Python
python迭代器与生成器详解
Mar 10 Python
使用Python实现在Windows下安装Django
Oct 17 Python
python调用虹软2.0第三版的具体使用
Feb 22 Python
Python实现打砖块小游戏代码实例
May 18 Python
Python基本数据结构之字典类型dict用法分析
Jun 08 Python
简单了解Python3里的一些新特性
Jul 13 Python
python导包的几种方法(自定义包的生成以及导入详解)
Jul 15 Python
用Python做一个久坐提醒小助手的示例代码
Feb 10 Python
Python2.x与3​​.x版本有哪些区别
Jul 09 Python
Python3交互式shell ipython3安装及使用详解
Jul 11 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数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
PHP抽象类与接口的区别实例详解
2019/05/09 PHP
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
2010/11/11 Javascript
js实现动画特效的文字链接鼠标悬停提示的方法
2015/03/02 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
jquery操作select取值赋值与设置选中实例
2017/02/28 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
2018/09/27 Javascript
使用JS获取页面上的所有标签
2018/10/18 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
node之本地服务器图片上传的方法示例
2019/03/26 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
2017/07/22 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
python 编码规范整理
2018/05/05 Python
softmax及python实现过程解析
2019/09/30 Python
python之列表推导式的用法
2019/11/29 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
举例讲解Python装饰器
2020/12/24 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
资生堂美国官网:Shiseido美国
2016/09/02 全球购物
Weekendesk意大利:探索多种引人入胜的周末主题
2016/10/14 全球购物
荷兰牛仔裤网上商店:Jeans Centre
2018/04/03 全球购物
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
高分子材料与工程专业个人求职信
2013/12/15 职场文书
办护照工作证明范本
2014/01/14 职场文书
《理想》教学反思
2014/02/17 职场文书
《威尼斯的小艇》教学反思
2014/02/17 职场文书
工商管理专业自荐信
2014/06/03 职场文书
篮球社团活动总结
2014/06/27 职场文书
Python 线程池模块之多线程操作代码
2021/05/20 Python
MySQL 十大常用字符串函数详解
2021/06/30 MySQL