【问题标题】:Display this decision tree with Graphviz使用 Graphviz 显示此决策树
【发布时间】:2017-07-26 01:27:57
【问题描述】:

我正在关注关于使用 python v3.6 使用 scikit-learn 进行机器学习的决策树的教程。

这里是代码;

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import mglearn
import graphviz

from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split

from sklearn.tree import DecisionTreeClassifier

cancer = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, stratify=cancer.target, random_state=42)
tree = DecisionTreeClassifier(random_state=0)
tree.fit(X_train, y_train)

tree = DecisionTreeClassifier(max_depth=4, random_state=0)
tree.fit(X_train, y_train)

from sklearn.tree import export_graphviz
export_graphviz(tree, out_file="tree.dot", class_names=["malignant", "benign"],feature_names=cancer.feature_names, impurity=False, filled=True)

import graphviz
with open("tree.dot") as f:
    dot_graph = f.read()
graphviz.Source(dot_graph)

如何使用 Graphviz 查看 dot_graph 中的内容?据推测,它应该看起来像这样;

【问题讨论】:

  • 检查export_graphviz函数,您可以通过该函数将.dot转换为其他格式,例如.png

标签: python python-3.x scikit-learn graphviz decision-tree


【解决方案1】:

Jupyter 将按原样显示图表,但如果您想放大更多,可以尝试保存文件并进一步检查:

# Draw graph
graph = pydotplus.graph_from_dot_data(dot_data)  

# Show graph
Image(graph.create_png())

【讨论】:

    【解决方案2】:

    在 jupyter notebook 中,以下绘制决策树:

    from sklearn.tree import DecisionTreeClassifier
    from sklearn import tree
    
    
    model = DecisionTreeClassifier()
    model.fit(X, y)
    dot_data = tree.export_graphviz(model, 
                      feature_names=feature_names,  
                      class_names=class_names,  
                      filled=True, rounded=True,  
                      special_characters=True,
                       out_file=None,
                               )
    graph = graphviz.Source(dot_data)
    graph
    

    如果你想保存为 png:

    graph.format = "png"
    graph.render("file_name")
    

    【讨论】:

      【解决方案3】:

      我在 Windows 10 中工作。 我通过添加到“路径”环境变量来解决这个问题。 我添加了错误的路径, 我添加了 Drive:\Users\User.Name\AppData\Local\Continuum\anaconda3\envs\MyVirtualEnv\lib\site-packages\graphviz 应该使用 驱动器:\Users\User.Name\AppData\Local\Continuum\anaconda3\envs\MyVirtualEnv\Library\bin\graphviz 最后我同时使用了两者,然后重新启动了 python/anaconda。 还添加了 pydotplus 路径,位于 ....MyVirtualEnv\lib\site-packages\pydotplus。

      【讨论】:

      【解决方案4】:

      您可以使用来自 IPython.display 的显示。这是一个例子:

      from sklearn.tree import DecisionTreeClassifier
      from sklearn import tree
      
      model = DecisionTreeClassifier()
      model.fit(X, y)
      
      from IPython.display import display
      display(graphviz.Source(tree.export_graphviz(model)))
      

      【讨论】:

        【解决方案5】:

        graphviz.Source(dot_graph) 返回一个graphviz.files.Source 对象。

        g = graphviz.Source(dot_graph)
        

        使用g.render() 创建图像文件。当我在没有参数的情况下在您的代码上运行它时,我得到了 Source.gv.pdf 但您可以指定不同的文件名。还有一个快捷方式g.view(),用于保存文件并在适当的查看器应用程序中打开它。

        如果您将代码原样粘贴到富终端(例如带有内联图形的 Spyder/IPython 或 Jupyter 笔记本)中,它将自动显示图像而不是对象的 Python 表示。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-03-12
          • 2019-05-28
          • 2020-04-06
          • 2021-04-10
          • 2019-12-26
          • 2019-03-10
          • 2018-02-09
          • 2022-08-24
          相关资源
          最近更新 更多