亲测!决策树可视化Graphviz中文乱码问题~

举报
数据社 发表于 2022/09/25 03:24:40 2022/09/25
【摘要】 在使用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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。