Python 决策树 GraphViz

Posted

技术标签:

【中文标题】Python 决策树 GraphViz【英文标题】:Python Decision Tree GraphViz 【发布时间】:2016-03-12 16:18:11 【问题描述】:

我正在尝试使用 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 实用程序?

提前致谢!

【问题讨论】:

【参考方案1】:

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

import subprocess
subprocess.call(['dot', '-Tpdf', 'tree.dot', '-o' 'tree.pdf'])

【讨论】:

【参考方案2】:

您也可以使用以下代码导出为 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") 

【讨论】:

【参考方案3】:

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

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

【讨论】:

以上是关于Python 决策树 GraphViz的主要内容,如果未能解决你的问题,请参考以下文章

决策树随机森林结果可视化

决策树随机森林结果可视化

如何使用 export_graphviz 显示决策树图

scikit学习决策树导出graphviz - 决策树中的错误类名

Graphviz绘制决策树基于Graphviz绘制由字典形式表示的决策树图像

Graphviz绘制决策树基于Graphviz绘制由字典形式表示的决策树图像