决策树结果可视化中文乱码问题解决方案

问题描述:

    因决策树可解释强,采用决策树来处理分类问题,在导出结果时,出现中文无法显示的问题(中文显示为框框)。这种情况是由于字体的原因导致的,解决方法如下:

1. 修改Graphviz配置文件

    字体配置文件 fonts.conf 路径:C:\Program Files (x86)\Graphviz2.38\fonts

    将 <dir>#FONTDIR#</dir>            <dir>~/.fonts</dir> 更改为

        <dir>C:/Windows/Fonts</dir>    <dir>~/.fonts</dir>

2. 将决策树dot文件保存下来

    查看保存在本地的 dot_data.dot 可发现,其默认字体 fontname=helvetica,只需将字体修改为支持的中文字体即可,通过正则表达式实现替换。

# dot_data.dot文件内容
digraph Tree {
node [shape=box, style="filled, rounded", color="black", fontname=helvetica] ;
edge [fontname=helvetica] ;
dot_data = export_graphviz(decision_tree=clf,
                           out_file=None,
                           feature_names=feature_names,
                           class_names=class_names,
                           filled=True,
                           rounded=True,
                           special_characters=True)
with open("./dot_data.dot", 'w', encoding="utf-8") as f:  # 注意编码方式
    f.writelines(dot_data)
# 打开 dot_data.dot,修改 fontname="支持的中文字体"
f = open("./dot_data.dot", "r+", encoding="utf-8")
open('./dot_test.dot', 'w').write(re.sub(r'fontname=helvetica', 'fontname="Microsoft YaHei"', f.read()))

3. 在操作命令窗口用graphviz导出结果

    可将结果导出为 PDF 或 PNG图片,结果如下,可正常显示中文。

# dot -Tpng dot_test.dot -o test.png  # 将结果保存为图片
# dot -Tpdf dot_test.dot -o test-2.pdf  # 将结果保存为 PDF

猜你喜欢

转载自blog.csdn.net/weixin_41713230/article/details/87860133
今日推荐