1

我正在尝试使用 scikit learn 实现决策树,然后使用 Graphviz 可视化决策树,我理解这是可视化 DT 的标准选择。我正在使用 PyCharm、anaconda、Python 2.7 和 OS X El Capitan。据我所知,我已经使用 PIP install 安装了 pydot 和 Graphviz,并且还直接在 Pycharm 中安装了它们,但无论我做什么,我都会不断得到一个“没有名为 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 上是否存在 dot 实用程序?

提前致谢!

4

3 回答 3

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") 
于 2015-12-07T23:48:33.897 回答
1

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

import subprocess
subprocess.call(['dot', '-Tpdf', 'tree.dot', '-o' 'tree.pdf'])
于 2015-12-07T22:18:05.127 回答
0

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

但是,结果不是您可以保存的图片或文件,您必须为您创建的每棵树手动执行此操作。对于更复杂和/或批处理树构建,您需要系统上的实际graphviz,因此您可以dot从终端或直接从 Python 调用程序,如 maxymoo 所述。

于 2017-06-16T08:13:00.440 回答