Project Icon

dtreeviz

提供直观的决策树可视化和模型解释功能

dtreeviz是一个专注于决策树可视化和模型解释的Python库。它支持多个主流机器学习框架,如scikit-learn、XGBoost等。该库提供树结构、预测路径、叶节点和特征空间等多种可视化功能,帮助用户直观理解决策树模型原理。dtreeviz适用于机器学习实践者和研究人员,可用于模型解释和教学等场景。

dtreeviz : 决策树可视化

描述

一个用于决策树可视化和模型解释的Python库。决策树是梯度提升机随机森林(tm)的基本构建块,这两者可能是结构化数据最受欢迎的两种机器学习模型。在学习这些模型如何工作以及解释模型时,可视化决策树是一个巨大的帮助。这些可视化的灵感来自R2D3的一个教育动画;机器学习的可视化介绍。关于我们的决策树可视化库和我们所做的视觉设计决策的深入讨论,请参阅如何可视化决策树

目前dtreeviz支持:scikit-learnXGBoostSpark MLlibLightGBMTensorflow。查看安装说明

作者

主要的代码和可视化清理贡献由Matthew Epland (@mepland)完成。

可视化示例

树可视化

<表格内容略>

预测路径解释

<表格内容略>

叶节点信息

<表格内容略>

特征空间探索

回归

分类

分类边界

作为一个实用函数,dtreeviz提供了dtreeviz.decision_boundaries(),它可以展示分类器的一维和二维特征空间,包括表示概率的颜色、决策边界和错误分类的实体。顺便说一下,这个方法不局限于树模型,它应该可以适用于任何具有predict_proba()方法的模型。这意味着scikit-learn中的任何模型都应该可以使用(但我们也使其适用于定义了predict()的Keras模型)。(由于它不专门用于树,该函数不使用从dtreeviz.model()获得的适配器。)详见classifier-decision-boundaries.ipynb


有时,查看改变某些超参数的动画会很有帮助。如果你查看classifier-boundary-animations.ipynb笔记本,你会看到生成以下动画的代码(动画png文件):

快速入门

请参阅安装说明,然后查看你正在使用的支持的机器学习库的特定笔记本

为了与这些不同的库进行互操作,dtreeviz使用从函数dtreeviz.model()获得的适配器对象来提取可视化所需的模型信息。给定这样的适配器对象,所有dtreeviz功能都可以使用相同的程序员接口。基本的dtreeviz使用方法是:

  1. 导入dtreeviz和您的决策树库
  2. 获取并将数据加载到内存中
  3. 使用您的决策树库训练分类器或回归器模型
  4. 使用以下命令获取dtreeviz适配器模型
    viz_model = dtreeviz.model(your_trained_model,...)
  5. 调用dtreeviz函数,例如
    viz_model.view()viz_model.explain_prediction_path(sample_x)

示例

这里是一个完整的Python文件示例,它在弹出窗口中显示以下树:

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier

import dtreeviz

iris = load_iris()
X = iris.data
y = iris.target

clf = DecisionTreeClassifier(max_depth=4)
clf.fit(X, y)

viz_model = dtreeviz.model(clf,
                           X_train=X, y_train=y,
                           feature_names=iris.feature_names,
                           target_name='iris',
                           class_names=iris.target_names)

v = viz_model.view()     # 将SVG渲染为内部对象
v.show()                 # 弹出窗口
v.save("/tmp/iris.svg")  # 可选择保存为svg

在笔记本中,您可以内联渲染而无需调用show()。只需调用view()

viz_model.view()       # 在笔记本中,内联显示

安装

如果尚未安装,请在您的系统上安装anaconda3。

您可能需要验证您没有安装conda版本的graphviz相关包,因为dtreeviz需要pip版本;您可以通过以下方式从conda空间中删除它们:

conda uninstall python-graphviz
conda uninstall graphviz

要安装(仅限Python >=3.6),请执行以下操作(在Windows上从Anaconda Prompt执行!):

pip install dtreeviz             # 安装dtreeviz(用于sklearn)
pip install dtreeviz[xgboost]    # 安装XGBoost相关依赖
pip install dtreeviz[pyspark]    # 安装pyspark相关依赖
pip install dtreeviz[lightgbm]   # 安装LightGBM相关依赖
pip install dtreeviz[tensorflow_decision_forests]   # 安装tensorflow_decision_forests相关依赖
pip install dtreeviz[all]        # 安装所有相关依赖

这还应该引入 graphviz Python 库(>=0.9),我们正在使用它来处理特定平台的事务。

限制。 目前只能生成 svg 文件,这减少了依赖项并大大简化了安装过程。

如果您有任何关于如何让 dtreeviz 在其他平台上(更好地)工作的有用建议,请发送电子邮件给 Terence。谢谢!

关于您的特定平台,请参阅以下小节。

Mac

确保安装了最新的 XCode 和命令行工具。如果已安装 XCode,可以从命令行运行 xcode-select --install 来安装命令行工具。您还需要签署 XCode 许可协议,可以通过命令行运行 sudo xcodebuild -license 来完成。接下来的 brew 安装需要编译 graphviz,所以您需要正确设置 XCode。

您需要 dot 的 graphviz 二进制文件。确保您有最新版本(在 10.13、10.14 上验证过):

brew reinstall graphviz

为了以防万一,请从任何 anaconda 安装中删除 dot,例如:

rm ~/anaconda3/bin/dot

从命令行,这个命令

dot -Tsvg

应该可以工作,它会停在那里等待输入,不会报错。您可以按 Ctrl+C 返回到 shell。确保您使用的是 brew 安装的正确 dot

$ which dot
/usr/local/bin/dot
$ ls -l $(which dot)
lrwxr-xr-x  1 parrt  wheel  33 May 26 11:04 /usr/local/bin/dot@ -> ../Cellar/graphviz/2.40.1/bin/dot
$

限制。 Jupyter notebook 有一个 bug,无法正确显示 .svg 文件,但 Jupyter Lab 没有问题。

Linux(Ubuntu 18.04)

要获取 dot 二进制文件,请执行:

sudo apt install graphviz

限制。 view() 方法可以弹出新窗口,图像可以在 jupyter notebook 中内联显示,但在 jupyter lab 中不行(解析 SVG XML 时会出错)。notebook 中的图像也会将我们使用的 Arial 字体替换,导致一些文本重叠。在此平台上只能生成 .svg 文件。

Windows 10

(确保 pip install graphviz,这对所有平台都是通用的,在 Windows 上请确保从 Anaconda Prompt 执行此操作!)

下载 graphviz-2.38.msi 并更新您的 Path 环境变量。将 C:\Program Files (x86)\Graphviz2.38\bin 添加到用户路径,将 C:\Program Files (x86)\Graphviz2.38\bin\dot.exe 添加到系统路径。这是 Windows,所以更新环境变量后可能需要重启。您应该在 Anaconda Prompt 中看到以下内容:

(base) C:\Users\Terence Parr>where dot
C:\Program Files (x86)\Graphviz2.38\bin\dot.exe

(不要使用 conda install -c conda-forge python-graphviz,因为您会得到旧版本的 graphviz Python 库。)

从 Anaconda Prompt 验证以下命令是否有效(使用大写 -V 而不是小写 -v):

dot -V

如果不起作用,那么您的 Path 有问题。我发现以下测试程序很有用。第一个程序检查 Python 是否能找到 dot

import os
import subprocess
proc = subprocess.Popen(['dot','-V'])
print( os.getenv('Path') )

下面的版本做同样的事情,只是使用 graphviz Python 库的后端支持实用程序,这是我们在 dtreeviz 中使用的:

import graphviz.backend as be
cmd = ["dot", "-V"]
stdout, stderr = be.run(cmd, capture_output=True, check=True, quiet=False)
print( stderr )

如果您在运行命令时遇到问题,可以尝试从以下位置复制文件:https://github.com/xflr6/graphviz/tree/master/graphviz。

将它们放在 AppData\Local\Continuum\anaconda3\Lib\site-packages\graphviz 文件夹中。

也清理 pycache 目录。

对于 graphviz windows 安装 8.0.5 和 python 接口 v0.18+ :

import graphviz.backend as be
cmd = ["dot", "-V"]
stdout = be.execute.run_check(cmd, capture_output=True, check=True, quiet=False)
print( stdout )

Jupyter Lab 和 Jupyter notebook 都能很好地显示内联 .svg 图像。

验证 graphviz 安装

尝试创建一个内容为 digraph T { A -> B } 的文本文件 t.dot(例如,将其粘贴到文本编辑器中),然后从命令行运行以下命令:

dot -Tsvg -o t.svg t.dot

这应该会生成一个简单的 t.svg 文件,可以正常打开。如果 dot 命令报错,则无法在 dtreeviz Python 代码中使用。如果找不到 dot 命令,那么你可能没有更新 PATH 环境变量,或者 graphviz 安装存在其他问题。

局限性

最后,不要使用 IE 浏览器查看 .svg 文件。请使用 Edge 浏览器,因为显示效果会更好。我怀疑 IE 是将它们显示为光栅图像而非矢量图像。在此平台上只能生成 .svg 文件。

本地安装 dtreeviz

请务必遵循上述安装指南。

为了运行测试,你需要使用 [dev] 额外选项安装库:

pip install dtreeviz[dev]        # 安装开发依赖

在开发过程中,要将 dtreeviz 库推送到本地 egg 缓存(强制更新),请执行以下操作(在 Windows 上使用 Anaconda 命令提示符):

python setup.py install -f

例如,在 Terence 的电脑上,它会添加 /Users/parrt/anaconda3/lib/python3.6/site-packages/dtreeviz-2.2.2-py3.6.egg

反馈

我们欢迎用户通过电子邮件(发送给 parrt)提交 issue 的方式告诉我们他们如何使用 dtreeviz,希望添加哪些功能等信息。

有用的资源

许可证

本项目根据 MIT 许可证的条款授权,详见 LICENSE

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号