2013-10-27 124 views
4

我期望这段代码创建树的PDF图形。在sklearn Python的决策树中制作pydot图

from sklearn import datasets,tree 
import StringIO 
import pydot 
from sklearn.externals.six import StringIO 

iris = datasets.load_iris() 

clf = tree.DecisionTreeClassifier() 
clf = clf.fit(iris['data'],iris['target']) 

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

有没有办法做到我想要的虽然pydot?这种方式是死路一条。

进一步解释问题,代码在最后一条语句中失败。 graph.write_pdf()正在graph.progs()中寻找Graphviz,但是那里没有条目。错误消息说没有找到Graphviz可执行文件。

无论如何,我可以通过在DOS终端中调用dot.exe命令来使用pdf文件,但最好使用pydot来执行此步骤。

+0

你是什么意思“这种方式是死路一条”?在运行时会得到什么错误消息和Python追溯? – ogrisel

回答

3

问题似乎是您的PATH语句不包含对GraphViz的引用 - 因此您的pydot模块找不到它。要验证这是问题,请从Windows cmd窗口中键入“PATH”。

C:\用户\罗恩弗雷德里克斯>路径PATH = C:\程序 文件\的CollabNet \ Subversion客户端; C:\ Program Files文件 (86)\ Graphviz2.34 \ BIN

上面的简化路径输出显示我的系统在我的PATH中包含Graphviz。如果您的PATH中没有Graphviz,请查找如何将Graphviz安装到您的用户路径中的搜索结果SO搜索此字符串“Graphviz可执行文件未找到”