问题描述:在使用pydotplus和Graphviz对决策树结构进行可视化的时候,由于训练数据的特征名称使用的是中文,所以在最终的可视化结果中,中文被显示成了乱码,具体如下图:
从网上找到的一些资料说,需要对GraphViz中的font配置文件做修改,但这些资料中所说的解决方案都是针对GraphViz 2.39版本做的,对于Graphviz2.49(目前的最新版本)无效(因为里面的配置文件都变了,也有可能是我安装的Graphviz版本里面的包不全)。我的解决方案如下:
dot_data=tree.export_graphviz(dtc,
feature_names=feats,
class_names=['N','Y'],
filled=True,special_characters=True,
rounded=True)
graph=pydotplus.graph_from_dot_data(dot_data)
#在原有的可视化代码后面添加如下代码,人为修改每个节点的fontname属性值
for node in graph.get_nodes():
node.set_fontname(lambda x:'SimHei')
Image(graph.create_png())
最后的可视化结果为(因为这种做法会抛出一些异常,所以才说是”部分解决“):