Jupyter Lab中使用Graphviz可视化决策树无法显示图片如何解决?
决策树Graphviz可视化无法正常显示问题解决方案
故障核心原因
你之前操作失败的核心原因分为两类:
- 调用参数不符合API要求,传入了错误类型的对象
- 运行环境不支持IPython原生渲染能力,或缺少系统层面的Graphviz依赖
之前操作失败的具体说明
- 直接执行
graph:输出的是pydotplus Dot类的实例内存地址,该对象没有默认渲染逻辑,不会直接显示图片 - 执行
Image(graph):Image类要求传入二进制字节流、本地文件路径或图片url,你传入的是Dot实例,类型匹配失败,仅返回Image对象的内存标识 - 执行
display(plt)无显示:仅Jupyter系列环境支持display的图片渲染能力,普通环境下无效果;若在Jupyter环境下仍无显示,一般是缺少系统层面的Graphviz依赖导致生成的二进制流异常
解决方案
方案1:Jupyter系列环境(Notebook/Lab/Colab)显示
首先确认你已经安装了系统层面的Graphviz工具包:
- Debian/Ubuntu:执行
apt install graphviz - macOS:执行
brew install graphviz - Windows:下载Graphviz官方安装包后,将安装路径下的bin目录加入系统环境变量
然后使用以下代码即可渲染显示:
from six import StringIO import pydotplus from sklearn import tree from IPython.display import Image, display dotfile = StringIO() # 可按需添加参数优化可视化效果 tree.export_graphviz( dt_default, out_file=dotfile, feature_names=你的特征列名列表, # 可选参数,显示特征名而非索引号 class_names=你的分类标签列表, # 可选参数,分类场景可添加 filled=True, # 可选参数,给节点填充颜色 rounded=True # 可选参数,节点圆角样式 ) graph = pydotplus.graph_from_dot_data(dotfile.getvalue()) # 传入png二进制流调用display渲染 display(Image(graph.create_png()))
方案2:本地普通Python环境显示
普通Python shell、IDE终端不支持IPython的display渲染能力,直接将生成的图片写入本地文件后打开即可:
# 接你已经生成的graph对象的后续代码 graph.write_png("决策树可视化结果.png")
执行完成后到代码运行的工作目录下打开生成的png文件即可查看。
内容的提问来源于stack exchange,提问作者Saurabh Deshpande
相关产品推荐
相关产品推荐

