用 Graphviz 显示这个决策树

新手上路,请多包涵

我正在关注一个关于使用 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 中的内容?据推测,它应该看起来像这样;

在此处输入图像描述

原文由 user3848207 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

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

 g = graphviz.Source(dot_graph)

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

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

原文由 MB-F 发布,翻译遵循 CC BY-SA 3.0 许可协议

在 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")

原文由 erncyp 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题