首页 文章

Python决策树GraphViz

提问于
浏览
1

我正在尝试使用scikit实现决策树,然后使用Graphviz可视化树,我理解这是可视化DT的标准选择 . 我正在使用PyCharm,anaconda,Python 2.7和OS X El Capitan . 据我所知,我已经安装了pydot和Graphviz PIP安装,并且还直接在Pycharm安装了它们,但无论我做什么,我都会不断得到一个名为graphviz的“No module” .

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上是否存在点工具?

提前致谢!

3 回答

  • 1

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

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

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

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

    结果不是您可以保存的图片或文件,并且您需要系统上的实际graphviz,因此您可以从终端或直接从Python调用 dot 程序,如maxymoo所述 .

相关问题