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 15 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
Jan 10 Python
Python调用C语言的方法【基于ctypes模块】
Jan 22 Python
Python网络爬虫神器PyQuery的基本使用教程
Feb 03 Python
python多维数组切片方法
Apr 13 Python
python+selenium打印当前页面的titl和url方法
Jun 22 Python
基于python实现从尾到头打印链表
Nov 02 Python
django 前端页面如何实现显示前N条数据
Mar 16 Python
python代码中怎么换行
Jun 17 Python
Matplotlib 绘制饼图解决文字重叠的方法
Jul 24 Python
python利用递归方法实现求集合的幂集
Sep 07 Python
浅谈anaconda python 版本对应关系
Oct 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
其他功能
2006/10/09 PHP
php入门小知识
2008/03/24 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
PHP实现动态web服务器方法
2015/07/29 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
jQuery 连续列表实现代码
2009/12/21 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
快速掌握Node.js环境的安装与运行方法
2016/02/16 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
vue.js利用defineProperty实现数据的双向绑定
2017/04/28 Javascript
使用bootstrap插件实现模态框效果
2017/05/10 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
2017/07/11 Javascript
bootstrap confirmation按钮提示组件使用详解
2017/08/22 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
Javascript表单序列化原理及实现代码详解
2020/10/30 Javascript
[06:33]DOTA2亚洲邀请赛小组赛第二日 TOP10精彩集锦
2015/01/31 DOTA
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python中的赋值、浅拷贝、深拷贝介绍
2015/03/09 Python
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
pytorch masked_fill报错的解决
2020/02/18 Python
sqlalchemy实现时间列自动更新教程
2020/09/02 Python
The North Face北面英国官网:美国著名户外品牌
2017/12/13 全球购物
全球在线商店:BerryLook
2019/04/14 全球购物
The Body Shop美体小铺西班牙官网:天然化妆品
2019/06/21 全球购物
财务分析个人的自荐书范文
2013/11/24 职场文书
开会迟到检讨书
2014/01/08 职场文书
政风行风评议整改方案
2014/09/15 职场文书
如何写贫困证明申请书
2014/10/29 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书
教研活动主持词
2015/07/03 职场文书
java设计模式--建造者模式详解
2021/07/21 Java/Android
MySQL transaction事务安全示例讲解
2022/06/21 MySQL
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS