sklearn plot_tree 图太小

Posted

技术标签:

【中文标题】sklearn plot_tree 图太小【英文标题】:Sklearn plot_tree plot is too small 【发布时间】:2020-04-14 06:33:56 【问题描述】:

我有这个简单的代码:

clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, y)

tree.plot_tree(clf.fit(X, y))
plt.show()

我得到的结果是这张图:

如何使这个图表清晰易读?我正在使用 PyCharm Professional 2019.3 作为我的 IDE。

【问题讨论】:

【参考方案1】:

我认为您正在寻找的设置是fontsize。你必须用max_depthfigsize 来平衡它以获得可读的情节。这是一个例子

from sklearn import tree
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

# load data
X, y = load_iris(return_X_y=True)

# create and train model
clf = tree.DecisionTreeClassifier(max_depth=4)  # set hyperparameter
clf.fit(X, y)

# plot tree
plt.figure(figsize=(12,12))  # set plot size (denoted in inches)
tree.plot_tree(clf, fontsize=10)
plt.show()

如果你想捕捉整棵树的结构,我想用小字体和高 dpi 保存绘图是解决方案。然后你可以打开一张图片并放大到特定的节点来检查它们。

# create and train model
clf = tree.DecisionTreeClassifier()
clf.fit(X, y)

# save plot
plt.figure(figsize=(12,12))
tree.plot_tree(clf, fontsize=6)
plt.savefig('tree_high_dpi', dpi=100)

这是它在大树上的样子的示例。

【讨论】:

【参考方案2】:

先设置好图片的大小怎么样:

clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, y)

fig, ax = plt.subplots(figsize=(10, 10))  # whatever size you want
tree.plot_tree(clf.fit(X, y), ax=ax)
plt.show()

【讨论】:

这并没有真正适合 plot_tree 以使其像 OP 想要的那样清晰。所有这一切都是扩展子图,使其适合更多项目,但不会将子图扩展到任何内容都可以作为动态方式读取的程度。

以上是关于sklearn plot_tree 图太小的主要内容,如果未能解决你的问题,请参考以下文章

sklearn决策树plot_tree中节点中的“值”是啥意思

如何调整 sklearn 中 plot_tree 图的大小以使其可读?

imshow() 的图太小

sklearn.plot_tree 如何可视化分类任务的 class_labels?

Jupyter中AttributeError: module ‘sklearn.tree‘ has no attribute ‘plot_tree‘的解决方法

从 sklearn 随机森林回归器可视化决策树