若我们的直接写这样的代码
feature_name = ['酒精','苹果酸','灰','灰的碱性','镁','总酚','类黄酮','非黄烷类酚类', '花青素', '颜色强度','色调','od280/od315稀释葡萄酒','晡氨酸']dot_data = tree.export_graphviz(Classfier,feature_names=feature_name,class_names=["琴酒","雪莉","奥尔摩德"],filled=True,rounded=False)graph = graphviz.Source(dot_data).render(view=True)print(graph)
那决策树是这样的
很明显
中文会变成乱码
所以我们需要加上这么一个参数
fontname="Microsoft YaHei"
即
graphviz画图默认使用Helvetica字体 需要修改 否则会出现乱码
加上参数后的效果如下
完美解决问题!
附带
tree.export_graphviz的参数说明:
参数:
decision_tree:决策树回归器或分类器
要绘制的决策树。
max_depth:整数,默认=无
表示的最大深度。如果没有,则完全生成树。
feature_names:字符串列表,默认=无
每个函数的名称。如果没有,将使用通用名称(“X[0]”、“X[1]”、...)。
class_names:str 或 bool 的列表,默认 = 无
每个目标类别的名称按数字升序排列。仅与分类相关,不支持multi-output。如果True
,则显示类名的符号表示。
label:{‘all’, ‘root’, ‘none’},默认='全部'
是否显示杂质标签等。选项包括‘all’ 显示在每个节点,‘root’ 仅显示在顶部根节点,或‘none’ 不显示在任何节点。
filled:布尔,默认=假
当设置为True
时,绘制节点以指示分类的多数类、回归值的极值或 multi-output 的节点纯度。
impurity:布尔,默认=真
当设置为True
时,显示每个节点的杂质。
node_ids:布尔,默认=假
当设置为True
时,在每个节点上显示 ID 号。
proportion:布尔,默认=假
当设置为True
时,将 ‘values’ 和/或 ‘samples’ 的显示分别更改为比例和百分比。
rounded:布尔,默认=假
当设置为True
时,绘制圆角节点框并使用 Helvetica 字体而不是 Times-Roman。
precision:整数,默认=3
每个节点的杂质、阈值和值属性值中浮点精度的位数。
ax:matplotlib 轴,默认=无
要绘制的轴。如果没有,使用当前轴。任何以前的内容都会被清除。
fontsize:整数,默认=无
文本字体的大小。如果没有,自动确定以适合数字。