我试图用scikit learn实现一个决策树,然后用Graphviz可视化该树,我知道这是可视化DT的标准选择。我正在使用PyCharm、anaconda、Python 2.7和OS X El Capitan。据我所知,我已经用PIP安装了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()
此时运行此代码将生成图形。但我无法查看该文件。1.如何让graphviz存储库工作?2.如何将图形写入PDF/PNG?我看到了一些例子,但没有工作3。我找到了这个命令:dot-Tps filename。dot-o输出文件。ps我在哪里使用它?如何验证我的OS X上是否存在点实用程序?
提前谢谢!
我很确定我是用自制软件安装graphviz的,但看起来你也可以从http://www.graphviz.org/Download_macos.php.如果无法使pydot工作,则需要从终端运行dot
命令,或者在脚本中使用子流程:
import subprocess
subprocess.call(['dot', '-Tpdf', 'tree.dot', '-o' 'tree.pdf'])
您还可以使用以下代码导出为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")
如果系统上没有/不需要graphviz,也可以打开。点文件作为文本,并将内容复制到webgraphviz,然后webgraphviz将为您创建和显示树。
但是,结果并不是您可以保存的图片或文件,您必须为创建的每棵树手动执行此操作。对于更复杂的和/或批处理树构建,您需要系统上的实际graphviz,因此您可以从终端或直接从Python调用dot
程序,如maxymoo所述。