graphviz应该是基于cmd做的一款软件,所以Python与它兼容性可能会差一些,本文就详细描述具体如何使带中文的python的graphviz模块图可视化。
本文默认你已经知道如何使用python的graphviz了,不会的可以参考以下网址:
目前笔者主要用于决策树的可视化。
第一步:打开graphviz软件根目录,找到font或者font.conf,根据版本不同可能会有差异,我的在C:\Program Files (x86)\Graphviz2.38\fonts里面,修改font的cachedir到自己电脑的字体文件夹,我的是C:\Windows\Fonts
首先需要将graphviz.Source的源文件(在graphviz-0.14版本似乎已经没了,可以试试打开site-packages/sklearn/tree/_export.py依然存在rounded)打开(eclipse可通过ctrl+鼠标左键),找到if rounded,rounded参数主要目的是调整节点方框所带的是圆角还是直角,修改此处的fontname为中文字体名(eg.SimSun)
之后在调用export_graphviz时必须使rouded为True,eg.
dot_data = StringIO()#存储字符流
export_graphviz(myDTModel0, out_file=dot_data,\
feature_names=wordList,\#节点特征名list
max_depth=5,\#决策树展示深度
class_names=list(set(trainY0.tolist()+testY0.tolist())),\#类别名list
filled=True,\
rounded=True)####***重要***
graph=pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("figures/model0.pdf")
结果如下: