dtreeviz

dtreeviz

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

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

dtreeviz决策树可视化机器学习模型解释数据科学Github开源项目

dtreeviz : 决策树可视化

描述

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

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

作者

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

可视化示例

树可视化

<表格内容略>

预测路径解释

<表格内容略>

叶节点信息

<表格内容略>

特征空间探索

回归

<table cellpadding="0" cellspacing="0"> <tr> <td><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/595cfa85-9701-416a-a3c6-d3a0a77dea33.svg" width="250"></td> <td><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/59954b3b-a51f-4d97-9ead-ad4354344e0f.png" width="250"></td> <td><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/8cfd1e68-1c31-4cfc-baf9-a2b7a71d6632.png" width="250"></td> </tr> </table>

分类

<table cellpadding="0" cellspacing="0"> <tr> <td><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/a79e43be-a4c8-4776-a7b0-a2da82bc81cd.png" width="250"></td> <td><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/e689c13b-dcbf-4979-9065-547399934f36.png" width="250"></td> </tr> </table>

分类边界

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

<table cellpadding="0" cellspacing="0"> <tr> <td><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/e1d7fc4b-5c4a-4a4a-9937-2b72a7a0a4fe.png" width="250"><br><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/95a27011-295f-428e-bec2-cd8fe55971b0.png" width="250"></td> <td><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/afd0ca07-01cd-4a53-823f-293b8b13b1a8.png" width="250"></td> </tr> </table>

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

<table cellpadding="0" cellspacing="0"> <tr> <td><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/6e822429-732b-47a9-b21f-e2e8d7f5d09f.png" width="250"></td> <td><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/0a004747-31b4-4677-9ad1-f575da416ab2.png" width="250"></td> </tr> </table>

快速入门

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

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

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

示例

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

<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/6c25cb71-a130-48e2-8a85-6378130af06a.svg" width="200">
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

编辑推荐精选

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

下拉加载更多