最近因为工作需要,要用决策树提取一些规则,但是我之前整理的宽表变量名称都是中文,而且目标(标签label)取值也是中文。在jupyter notebook里写了常规代码运行之后,发现中文显示不出来,显示为框框。然后就在网上找一些解决方法,但是不是没说明白,就是很麻烦(要各种编码解码)。所以,自己综合了一些网上的答案,并根据中间结果,摸索出一个简单有效的解决方法,分享一下,如果不对的地方,敬请谅解。
(一)主要思路
下面说一下解决方法,先贴出来运行成功的代码(用的解释器是jupyter notebook):
from sklearn.externals.six import StringIO
import pydotplus
from IPython.display import Image
dot_data = StringIO()
tree.export_graphviz(clf, out_file=dot_data,
feature_names=feature_names,
class_names=class_names,
filled=True, rounded=True,
special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data.getvalue().replace(‘helvetica’,’“Microsoft YaHei”’))
Image(graph.create_png())
重点在这一句graph = pydotplu