【问题标题】:Python Decision Tree GraphVizPython 决策树 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 实用程序?

提前致谢!

【问题讨论】:

    标签: python scikit-learn graphviz dot pydot


    【解决方案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 所述。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-02-09
          • 2018-07-05
          • 2017-07-26
          • 2017-05-03
          • 2021-04-10
          • 1970-01-01
          • 2018-06-13
          • 2019-03-10
          相关资源
          最近更新 更多