提问者:小点点

无法在Jupyter笔记本中显示graphviz树


我试图在Jupyter笔记本中显示决策树,我一直收到消息:

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,skLearning 0.17.1,Graphviz 0.8.2和IPython 6.4.0)


共2个答案

匿名用户

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

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

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

匿名用户

如果你和conda一起工作,保罗-阿曼德的答案应该会奏效。如果没有,那么你必须运行:

brew install graphviz
pip install graphviz

如果收到警告,说明graphviz已安装但未链接,请按照说明进行链接。即brew-link-graphviz(或brew-link-如果前者给出错误,则覆盖graphviz)。

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