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_depth
和figsize
来平衡它以获得可读的情节。这是一个例子
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 图的大小以使其可读?
sklearn.plot_tree 如何可视化分类任务的 class_labels?
Jupyter中AttributeError: module ‘sklearn.tree‘ has no attribute ‘plot_tree‘的解决方法