You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决决策树可视化画质模糊、标签无法识别的问题

解决sklearn决策树plot_tree导出图像模糊、标签无法辨认的问题

方法1:调整plot_tree核心参数+增大画布尺寸

默认的plot_tree参数字体偏小、画布尺寸不足,是导致标签拥挤模糊的核心原因。直接修改代码如下:

from sklearn.tree import plot_tree
import matplotlib.pyplot as plt

# 先设置足够大的画布尺寸,根据树的深度调整,比如(25, 15)
plt.figure(figsize=(25, 15))
# 增加字体大小,指定特征名和类别名让标签更明确
plot_tree(
    model,
    filled=True,
    rounded=True,  # 圆角节点提升可读性
    feature_names=X_train.columns,  # 替换为你的特征列名(若用DataFrame)
    class_names=[str(c) for c in model.classes_],  # 替换为你的类别名称
    fontsize=10  # 根据画布大小调整,8-12区间都可尝试
)
plt.title("Decision tree", fontsize=16)
# SVG是矢量图,无需设置dpi,直接保存即可
plt.savefig('testfig.svg', format='svg')
plt.close()  # 避免plt.show()导致的画布重置问题

方法2:用export_graphviz生成更清晰的矢量图

如果plot_tree的效果仍不理想,推荐用export_graphviz配合graphviz工具,生成的图可控性更强,适配复杂决策树:

  1. 先完成依赖安装:

    • 系统层面:Windows/macOS/Linux安装对应版本的graphviz工具
    • Python包:pip install graphviz
  2. 运行代码:

from sklearn.tree import export_graphviz
from graphviz import Source

# 导出dot格式文件
export_graphviz(
    model,
    out_file="tree.dot",
    feature_names=X_train.columns,
    class_names=[str(c) for c in model.classes_],
    filled=True,
    rounded=True,
    special_characters=True
)

# 生成SVG格式图像
graph = Source.from_file("tree.dot")
graph.render("decision_tree", format="svg")  # 会生成decision_tree.svg文件

方法3:限制决策树深度(可选)

如果你的决策树过深(比如深度超过5),节点会极度密集,即使调整参数也难以看清。可以在训练时限制树的大小:

model = DecisionTreeClassifier(max_depth=5, random_state=20)  # 设置max_depth控制树的复杂度
model.fit(X_train, y_train)

内容的提问来源于stack exchange,提问作者Ted

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 12:35:28