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新手编程过程中如何规避一些常见问题的建议
Apr 01 Python
python删除指定类型(或非指定)的文件实例详解
Jul 06 Python
pandas表连接 索引上的合并方法
Jun 08 Python
使用PyCharm创建Django项目及基本配置详解
Oct 24 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
Mar 26 Python
浅谈Python type的使用
Nov 19 Python
python中with用法讲解
Feb 07 Python
Selenium元素定位的30种方式(史上最全)
May 11 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
Jun 03 Python
带你学习Python如何实现回归树模型
Jul 16 Python
python单元测试框架pytest的使用示例
Oct 07 Python
python实现语音常用度量方法的代码详解
May 25 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+DBM的同学录程序(2)
2006/10/09 PHP
php与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
Ajax+PHP 边学边练之四 表单
2009/11/27 PHP
CI框架装载器Loader.php源码分析
2014/11/04 PHP
PHP中时间加减函数strtotime用法分析
2017/04/26 PHP
PHP用swoole+websocket和redis实现web一对一聊天
2019/11/05 PHP
jquery中event对象属性与方法小结
2013/12/18 Javascript
javascript 获取iframe里页面中元素值的方法
2014/02/17 Javascript
你未必知道的JavaScript和CSS交互的5种方法
2014/04/02 Javascript
jquery日历插件datepicker用法分析
2016/01/22 Javascript
javascript 动态样式添加的简单实现
2016/10/11 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
2017/07/15 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
react.js使用webpack搭配环境的入门教程
2017/08/14 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
layui 点击重置按钮, select 并没有被重置的解决方法
2019/09/03 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
JS监听组合按键思路及实现过程
2020/04/17 Javascript
vue配置多代理服务接口地址操作
2020/09/08 Javascript
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
python下解压缩zip文件并删除文件的实例
2018/04/24 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
如何高效率的查找一个月以内的数据
2012/04/15 面试题
应届电子商务毕业自荐书范文
2014/02/11 职场文书
村党的群众路线教育实践活动总结材料
2014/10/31 职场文书
青年岗位能手事迹材料
2014/12/23 职场文书
公司劳动纪律管理制度
2015/08/04 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers