无法在 Jupyter Notebook 中显示 graphviz 树

Can't display graphviz tree in Jupyter Notebook

我正在尝试在 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'))

当我尝试使用 'pipe' 时,最后一行出现异常。 我也试过:

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)

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

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

别忘了先卸载之前安装的包。

如果您使用的是 conda,Paul-Armand 的回答应该有效。如果没有,那么你必须 运行 :

brew install graphviz
pip install graphviz

如果您收到警告说 graphviz 已安装但未 linked 然后按照说明 link 安装它。即 brew link graphviz(如果前者出错,则 brew link --overwrite graphviz)。

它在没有 brew 的 conda 中工作的原因是 conda install graphviz 实际上安装的是 c++ 库而不是 python 库。