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(r'fontname=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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM