一个用于决策树可视化和模型解释的Python库。决策树是梯度提升机和随机森林(tm)的基本构建块,这两者可能是结构化数据最受欢迎的两种机器学习模型。在学习这些模型如何工作以及解释模型时,可视化决策树是一个巨大的帮助。这些可视化的灵感来自R2D3的一个教育动画;机器学习的可视化介绍。关于我们的决策树可视化库和我们所做的视觉设计决策的深入讨论,请参阅如何可视化决策树。
目前dtreeviz支持:scikit-learn、XGBoost、Spark MLlib、LightGBM和Tensorflow。查看安装说明。
主要的代码和可视化清理贡献由Matthew Epland (@mepland)完成。
<表格内容略>
<表格内容略>
<表格内容略>
作为一个实用函数,dtreeviz提供了dtreeviz.decision_boundaries(),它可以展示分类器的一维和二维特征空间,包括表示概率的颜色、决策边界和错误分类的实体。顺便说一下,这个方法不局限于树模型,它应该可以适用于任何具有predict_proba()方法的模型。这意味着scikit-learn中的任何模型都应该可以使用(但我们也使其适用于定义了predict()的Keras模型)。(由于它不专门用于树,该函数不使用从dtreeviz.model()获得的适配器。)详见classifier-decision-boundaries.ipynb。
有时,查看改变某些超参数的动画会很有帮助。如果你查看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使用方法是:
viz_model = dtreeviz.model(your_trained_model,...)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。谢谢!
关于您的特定平台,请参阅以下小节。
确保安装了最新的 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 没有问题。
要获取 dot 二进制文件,请执行:
sudo apt install graphviz
限制。 view() 方法可以弹出新窗口,图像可以在 jupyter notebook 中内联显示,但在 jupyter lab 中不行(解析 SVG XML 时会出错)。notebook 中的图像也会将我们使用的 Arial 字体替换,导致一些文本重叠。在此平台上只能生成 .svg 文件。
(确保 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 图像。
尝试创建一个内容为 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 文件。
请务必遵循上述安装指南。
为了运行测试,你需要使用 [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一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频


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


选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。


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


最强AI数据分析助手
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。


像人一样思考的AI智能体
imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号