2015-12-07 132 views
1

我试图通过scikit学习实现决策树,然后用Graphviz可视化树,我知道它是可视化DT的标准选择。我使用PyCharm,anaconda,Python 2.7和OS X El Capitan。我已经安装了pydot和Graphviz以及PIP安装,据我所知并且也直接在Pycharm中安装它们,但无论我做什么,我都会连续获得'No module named graphviz'。Python决策树GraphViz

from sklearn.datasets import load_iris 
from sklearn import tree 
#import graphviz as gv 
# uncommenting the row above produces an error 
clf = tree.DecisionTreeClassifier() 
iris = load_iris() 
clf = clf.fit(iris.data, iris.target) 
with open('graph.dot', 'w') as file: 
    tree.export_graphviz(clf, out_file = file) 
file.close() 

目前运行此代码会生成graph.dot但我无法查看该文件。 1.如何让graphviz存储库正常工作? 2.如何将图形写入PDF/PNG?我看到一些例子,但没有工作 3.我发现这个命令:dot -Tps filename.dot -o outfile.ps 我在哪里使用它?我怎样才能验证我的OS X上有一个点实用程序?

在此先感谢!

回答

1

我很确定我使用自制软件安装了graphviz,但它看起来像你也可以从http://www.graphviz.org/Download_macos.php下载一个二进制文件。如果你不能得到pydot工作,你需要从终端运行dot命令,或在您脚本中使用子:

import subprocess 
subprocess.call(['dot', '-Tpdf', 'tree.dot', '-o' 'tree.pdf']) 
+0

谢谢你,完美的作品! – OAK

1

您还可以使用下面的代码导出为PDF文件。

首先安装pydot2

pip install pydot2 

然后你可以用下面的代码:

from sklearn.datasets import load_iris 
from sklearn import tree 
clf = tree.DecisionTreeClassifier() 
iris = load_iris() 
clf = clf.fit(iris.data, iris.target) 

from sklearn.externals.six import StringIO 
import pydot 

dot_data = StringIO() 
tree.export_graphviz(clf, out_file=dot_data) 
graph = pydot.graph_from_dot_data(dot_data.getvalue()) 
graph.write_pdf("graph.pdf") 
0

如果你没有/想你的系统,你也可以打开.dot文件为文本上的graphviz并将内容复制到webgraphviz,然后它将为您创建并显示树。

结果不是图片或文件,您可以保存,不过,你必须为你创建每棵树手动完成。对于更复杂和/或批量构建树,你需要在系统上的实际graphviz,所以你可以为maxymoo描述调用dot程序无论是从终端或直接退出的Python。