亲测!决策树可视化Graphviz中文乱码问题~
【摘要】
在使用Graphviz进行决策树可视化的过程中遇到一个问题:export_graphviz似乎不支持中文,当feature_name包含中文时,导出的决策树pdf中文都是乱码。查了一些资料,说是要把源文件...
在使用Graphviz进行决策树可视化的过程中遇到一个问题:export_graphviz似乎不支持中文,当feature_name包含中文时,导出的决策树pdf中文都是乱码。查了一些资料,说是要把源文件保存为UTF-8的格式,但在export_graphviz时不知道该怎么改。
import pydotplus
from sklearn import tree
from sklearn.externals.six import StringIO
from sklearn.model_selection import train_test_split
#生成训练集
X_train,X_test,Y_train,Y_test = train_test_split(x,y,test_size=0.2)
# 训练模型
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X_train,Y_train)
#测试
Y_predict = clf.predict(X_test)
matchCount = 0
for i in range(len(Y_predict)):
if Y_predict[i] == Y_test[i]:
matchCount += 1
accuracy = float(matchCount/len(Y_predict))
#可视化
dot_data = StringIO()
tree.export_graphviz(clf,out_file = dot_data,feature_names=feature_name,
class_names=target_name,filled=True,rounded=True,
special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("Tree.pdf")
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
输出svg时中文显示正常!!!
#可视化
dot_data = StringIO()
tree.export_graphviz(clf,out_file = dot_data,feature_names=feature_name,
class_names=target_name,filled=True,rounded=True,
special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_svg("Tree.svg")
- 1
- 2
- 3
- 4
- 5
- 6
- 7
网上有说找到安装路径在 Graphviz\etc\fonts\fonts.conf,找到以下这行:
<dir>#FONTDIR#</dir>
- 1
改成 Windows 字型路径:
<dir>C:\WINDOWS\Fonts</dir>
- 1
这个方法我也试了,没用啊!!
综上,直接保存为svg格式即可,方便快捷!!
文章来源: dataclub.blog.csdn.net,作者:数据社,版权归原作者所有,如需转载,请联系作者。
原文链接:dataclub.blog.csdn.net/article/details/111406385
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)