荣一不是阿贝尔

技术决定长度,‘情怀’决定高度。

导航

Python中Graphviz的输出问题

不多说,先上代码~

import sys
from sklearn.datasets import load_iris
from sklearn import tree
from sklearn.externals.six import StringIO
import pydotplus

iris = load_iris()  # 载入数据集
clf = tree.DecisionTreeClassifier()  # 算法模型
clf = clf.fit(iris.data, iris.target)  # 模型训练
dot_data = StringIO()
tree.export_graphviz(clf, out_file=dot_data,
                         feature_names=iris.feature_names,
                         class_names=iris.target_names,
                         filled=True, rounded=True,
                         special_characters=True)

graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("iris1.pdf")  # 写入pdf

 

运行完之后应该长这样:

 

 

----------------------------------------------------------------------------------------------------------------------------------------------正文开始--------------------------------------------------------------------------------------------------------------------------------------------------------

   你以为这篇文章是在讲决策树Python的代码实现吗?那你就错了。

这是一篇解决Python中 “Graphviz图片输出” 出现问题的技术贴。我参考了各位大神的解决方案,不幸的是我在大神方案的最后一个plan里找到了我的问题,幸运的是因此我找到了几乎所有的解。

所有,当你遇见类似的问题,常规解法如下:

解1:

 

答案是这样的

简而言之就是,你可能安装了一个较新版本的python,所有旧的

import pydot 代码不适合了,这是你要做的很简单

要么 选择装个 pydotplus包 然后  import pydotplus

要么如下操作

import pydot
iris = load_iris()  # 载入数据集
clf = tree.DecisionTreeClassifier()  # 算法模型
clf = clf.fit(iris.data, iris.target)  # 模型训练
dot_data = StringIO()
tree.export_graphviz(clf, out_file=dot_data,
                         feature_names=iris.feature_names,
                         class_names=iris.target_names,
                         filled=True, rounded=True,
                         special_characters=True)

graph[0] = pydot.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("iris1.pdf")  # 写入pdf

 

解2:

如果上面的操作无法解决,那么你不得不检查

1.graphviz软件你有没有下载,没有的话点下面的链接即可

http://www.graphviz.org/download/

下完软件记得 安装 graphviz包

解3:

如果这时候还没有解决问题,那八成是你的环境变量没有设好

 

如果还没有解决你的问题,那。。。

欢迎私信我,一起讨论

 

 

以上

 

 

参考

1. https://stackoverflow.com/questions/38176472/graph-write-pdfiris-pdf-attributeerror-list-object-has-no-attribute-writ

2. https://stackoverflow.com/questions/18438997/why-is-pydot-unable-to-find-graphvizs-executables-in-windows-8

posted on 2018-02-01 15:23  荣一不是阿贝尔  阅读(12639)  评论(1编辑  收藏  举报