解决问题,在pycharm中使用graphviz绘制决策树时,决策树图片中不显示中文(中文字体乱码!!) 图文并茂版!!!
Posted 温柔且上进c
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决问题,在pycharm中使用graphviz绘制决策树时,决策树图片中不显示中文(中文字体乱码!!) 图文并茂版!!!相关的知识,希望对你有一定的参考价值。
问题信息
•我们在pycharm中使用graphviz绘制决策树时,可能会出现下述图片中中文字体乱码的问题:
•参考网上修改各种配置文件的方法,一般是不能解决问题的!,此博客介绍一种不修改配置文件的方法解决此问题!!
问题代码
import graphviz
from sklearn import tree
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
wine = load_wine()
Xtrain, Xtest, Ytrain, Ytest = train_test_split(wine.data, wine.target, test_size=0.3)
clf = tree.DecisionTreeClassifier(criterion='entropy'
,random_state=30
,splitter='random')
# random_state随机模式可输入任意数字,
cl = clf.fit(Xtrain, Ytrain)
score = clf.score(Xtest, Ytest)
print(score)
feature_name = ['酒精', '苹果酸', '灰', '灰的碱性', '镁', '总酚', '类黄酮', '非黄烷类酚类', '花青素', '颜色强度', '色调', 'od280/od315稀释葡萄酒',
'脯氨酸'] # 特征值
dot_data = tree.export_graphviz(
clf,
feature_names=feature_name,
class_names=['琴酒', '雪梨', '贝尔摩德'],
filled=True, # 是否填充颜色,true 填充颜色
rounded=True, # 框的形状
)
graph = graphviz.Source(dot_data) # 此行代码出现问题!!!
graph.render('wine_tree')
•当你使用上述代码绘制决策树时,就会出现图片中中文字体乱码的情况!!
问题分析
•出现问题的代码行!!!
graph = graphviz.Source(dot_data)
•在不修改dot_data字体配置时,绘制图像的字体为:fontname = helvetica
,此字体为西文字体,不支持中文字体,当我们直接使用而不修改字体配置时,就会出现图片中中文字体乱码的情况!!!
解决问题
•出现上述问题时,只需增加中文字体的配置即可解决中文乱码问题!!
graph = graphviz.Source(dot_data.replace('helvetica', '"Microsoft YaHei"'), encoding='utf-8')
•将上述问题代码行修改为此代码行即可解决!!!
注意
•’“Microsoft YaHei”’
这里是单引号里面套着双引号,不能出现书写错误!!!
•完整正确代码:
import graphviz
from sklearn import tree
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
wine = load_wine()
Xtrain, Xtest, Ytrain, Ytest = train_test_split(wine.data, wine.target, test_size=0.3)
clf = tree.DecisionTreeClassifier(criterion='entropy'
,random_state=30
,splitter='random')
# random_state随机模式可输入任意数字,
cl = clf.fit(Xtrain, Ytrain)
score = clf.score(Xtest, Ytest)
print(score)
feature_name = ['酒精', '苹果酸', '灰', '灰的碱性', '镁', '总酚', '类黄酮', '非黄烷类酚类', '花青素', '颜色强度', '色调', 'od280/od315稀释葡萄酒',
'脯氨酸'] # 特征值
dot_data = tree.export_graphviz(
clf,
feature_names=feature_name,
class_names=['琴酒', '雪梨', '贝尔摩德'],
filled=True, # 是否填充颜色,true 填充颜色
rounded=True, # 框的形状
)
graph = graphviz.Source(dot_data.replace('helvetica', '"Microsoft YaHei"'), encoding='utf-8')
graph.render('wine_tree')
•解决问题后图片显示:
以上是关于解决问题,在pycharm中使用graphviz绘制决策树时,决策树图片中不显示中文(中文字体乱码!!) 图文并茂版!!!的主要内容,如果未能解决你的问题,请参考以下文章
PyCharm 2016无法识别graphviz包2.38.xxx