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

