首页 > 解决方案 > 无法在 Jupyter Notebook 中显示 graphviz 树

问题描述

我正在尝试在 Jupyter Notebook 中显示决策树,但一直收到以下消息:

CalledProcessError: Command '['dot.bat', '-Tsvg']' returned non-zero exit status 1

我正在使用以下代码:

from sklearn.datasets import load_iris 
from sklearn import tree
import graphviz
from IPython.display import SVG
iris = load_iris()
clf = tree.DecisionTreeClassifier()
fitted_clf = clf.fit(iris.data, iris.target)
graph = graphviz.Source(tree.export_graphviz(fitted_clf, 
                               feature_names = iris.feature_names,
                               class_names = iris.target_names, 
                               filled = True, rounded = True, 
                               special_characters = True))
SVG(graph.pipe(format='svg'))

当我尝试使用“管道”时,最后一行会引发异常。我也试过:

graph.format = 'png'
graph.render('example')

而不是管道,但我继续提出类似的异常:

CalledProcessError: Command '['dot.bat', '-Tpng', '-O', 'example']' returned non-zero exit status 1

知道是什么导致了这种行为吗?我该如何解决?

(我正在使用 Python 3.5.2、sklearn 0.17.1、graphviz 0.8.2 和 IPython 6.4.0)

标签: python-3.xcommandjupyter-notebookgraphvizdecision-tree

解决方案


从 conda-forge repo 安装 graphviz xorg-libxrender xorg-libxpm,来自 pip 的 python 绑定通常可以为我解决这个问题。

conda install -c conda-forge graphviz xorg-libxrender xorg-libxpm
pip install graphviz

不要忘记先卸载以前安装的软件包。


推荐阅读