一个用于决策树可视化和模型解释的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编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号