graphviz应该是基于cmd做的一款软件,所以Python与它兼容性可能会差一些,本文就详细描述具体如何使带中文的python的graphviz模块图可视化。
本文默认你已经知道如何使用python的graphviz了,不会的可以参考以下网址:
scikit-learn决策树算法类库使用小结 - 刘建平Pinard - 博客园
目前笔者主要用于决策树的可视化。
第一步:打开graphviz软件根目录,找到font或者font.conf,根据版本不同可能会有差异,我的在C:Program Files (x86)Graphviz2.38fonts里面,修改font的cachedir到自己电脑的字体文件夹,我的是C:WindowsFonts
![v2-7402c5f963309867aaab1dc5e145419e_b.png](http://img-01.proxy.5ce.com/view/image?&type=2&guid=daba2f91-4b2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-7402c5f963309867aaab1dc5e145419e_b.png)
首先需要将graphviz.Source的源文件(在graphviz-0.14版本似乎已经没了,可以试试打开site-packages/sklearn/tree/_export.py依然存在rounded)打开(eclipse可通过ctrl+鼠标左键),找到if rounded,rounded参数主要目的是调整节点方框所带的是圆角还是直角,修改此处的fontname为中文字体名(eg.SimSun)
![v2-209354942330c9b1a3618e8959ce730e_b.png](http://img-03.proxy.5ce.com/view/image?&type=2&guid=daba2f91-4b2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-209354942330c9b1a3618e8959ce730e_b.png)
之后在调用export_graphviz时必须使rouded为True,eg.
dot_data
结果如下:
![v2-3699e8bfc5b6181981875d34355b5102_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=daba2f91-4b2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-3699e8bfc5b6181981875d34355b5102_b.jpg)