提问者:小点点

在python中使用graph viz绘制决策树


我遵循上一篇文章给出的答案:是否可以在scikit learn中打印决策树?

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

clf = tree.DecisionTreeClassifier()
iris = load_iris()

clf = clf.fit(iris.data, iris.target)
tree.export_graphviz(clf,    out_file='tree.dot')
dot_data = StringIO() 
tree.export_graphviz(clf, out_file=dot_data)
graph = pydot.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("iris.pdf")

不幸的是,我无法找出以下错误:

'list' object has no attribute 'write_pdf'

是否有人知道一种解决方法,即生成的树的结构。dot文件是一个列表吗?

使现代化

我试图使用Web应用程序http://webgraphviz.com/.这是可行的,但是,决策树条件,连同类不显示。有没有办法将这些包含在tree.dot文件中?


共1个答案

匿名用户

看起来您在中收集的数据类型为list

graph = pydot.graph_from_dot_data(dot_data.getvalue())
type(graph)
<type 'list'>

我们只对列表中的第一个元素感兴趣。所以你可以用以下两种方法中的一种,

1) 将收集dot_数据的行图形中的值更改为

(graph, ) = pydot.graph_from_dot_data(dot_data.getvalue())

2) 或者在图形中收集整个列表,但只需使用发送到pdf的第一个元素

graph[0].write_pdf("iris.pdf")

这是我得到的输出iris.pdf

为了避免路径错误,

异常:在路径中找不到“dot.exe”。

从此处安装graphviz

然后在代码中使用以下任一选项。

import os
os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'

或者只需将以下内容添加到控制面板中的windows路径。

C:\ProgramFiles(x86)\Graphviz2。38\bin

根据graphviz文档,在安装过程中不会将其添加到windows路径。