在sklearn Python的决策树中使用pydot制作图表

时间:2013-10-27 00:00:02

标签: python decision-tree pydot

我希望这段代码能够创建树的PDF图。

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来执行此步骤。

2 个答案:

答案 0 :(得分:4)

添加PATH变量后,看起来您正在导入StringIO,然后调用StringIO.StringIO()

试着打电话:

dot_data = StringIO()

适用于我的python 2.7.6 Win7 x64环境,修复了pydot and graphviz error: Couldn't import dot_parser, loading of dot files will not be possible

答案 1 :(得分:3)

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

  

C:\ Users \ Ron Fredericks> path PATH = C:\ Program   Files \ CollabNet \ Subversion客户端; C:\ Program Files   (86)\ Graphviz2.34 \ BIN

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