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

问题描述:

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

决策树结果可视化中文乱码问题解决方案_第1张图片

1. 修改Graphviz配置文件

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

    将 

#FONTDIR#            ~/.fonts 更改为

       

C:/Windows/Fonts    ~/.fonts

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

决策树结果可视化中文乱码问题解决方案_第2张图片

 

 

 

 

 

 

 

 

你可能感兴趣的:(基础知识)