graphviz 决策树绘图中文乱码解决方法

Posted wqbin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了graphviz 决策树绘图中文乱码解决方法相关的知识,希望对你有一定的参考价值。

1、修改graphviz配置文件

技术图片

 

 

 

<dir>C:\\WINDOWS\\Fonts</dir>
更改为
<dir>~/.fonts</dir>

技术图片

 

 

 

2、将决策树dot_data文件保存下来

 

from sklearn import tree
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
import pandas as pd

wine = load_wine()
Xtrain, Xtest, Ytrain, Ytest = train_test_split(wine.data,wine.target,test_size=0.3)
clf = tree.DecisionTreeClassifier(criterion="entropy")
clf = clf.fit(Xtrain, Ytrain)
score = clf.score(Xtest, Ytest) #返回预测的准确度accuracy

score:0.94444444444444442

feature_name = [酒精,苹果酸,,灰的碱性,,总酚,类黄酮,非黄烷类酚类,花青素,颜色强度,色调,od280/od315稀释葡萄酒,脯氨酸]

import graphviz
dot_data = tree.export_graphviz(clf, out_file=".\\Tree.dot"
                                ,feature_names = feature_name
                                ,class_names=["琴酒","雪莉","贝尔摩德"]
                                ,filled=True
                                ,rounded=True
                               ) 

 

生成相应的dot文件如下:

技术图片

 

 

 

 

cmd:

切换到相应目录

dot -Tjpg Tree.dot -o tree.jpg

技术图片

 

 

 

3、dot_data文件格式转换

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

import re
# 打开 dot_data.dot,修改 fontname="支持的中文字体"
f = open("./Tree.dot", "r+", encoding="utf-8")
open(./Tree_utf8.dot, w, encoding="utf-8").write(re.sub(rfontname=helvetica, fontname="Microsoft YaHei", f.read()))
f.close()

 

cmd:

jpg:

dot -Tjpg Tree_utf8.dot -o tree1.jpg

技术图片

 

 

 

pdf:

dot -Tjpg Tree_utf8.dot -o tree2.pdf

 

技术图片

 

以上是关于graphviz 决策树绘图中文乱码解决方法的主要内容,如果未能解决你的问题,请参考以下文章

InvocationException: GraphViz‘s exe 解决决策树可视化绘图时报错

InvocationException: GraphViz‘s exe 解决决策树可视化绘图时报错

决策树可视化Graphviz中文乱码

Python 决策树 GraphViz

如何阅读graphviz决策树?

scikit学习决策树导出graphviz - 决策树中的错误类名