Windows python3 sklearn 决策树可视化参数及中文乱码

需要安装graphviz,简单的pip install 之后,执行却一直报“无法找到文件”
最后只好手动安装,在graphviz官网(https://graphviz.gitlab.io/_pages/Download/Download_windows.html) 找到windows的对应版本wheel文件,安装后修改系统用户变量path,将安装路径:F:\graphviz\bin 添加到path变量中;
然后得安装pygraphviz,一开始是用pip install,但是一直报错,是unicode相关的错误,修改了pip的init文件也还是不行,网上解释是没有对应的windows版本,只能在linux上安装
于是到官网下载python3版本可用的wheel文件,然后到安装地址下执行命令:pip install XXXX.wheel
之后就可以将树可视化了:
这里的feature_names来自tfidf模型的tfidf_model.get_feature_names()
class_name是有顺序的,最好用树的class_属性,否则输出的顺序是乱的

    dot_data = StringIO()
    tree.export_graphviz(clf,
                         out_file=dot_data,
                         feature_names=feature_names,
                         class_names=clf.classes_,
                         filled=True, rounded=True, max_depth=10,
                         impurity=False)

    graph = pydot.graph_from_dot_data(dot_data.getvalue())
    # 输出pdf,显示整个决策树的思维过程
    graph[0].write_pdf("viz.pdf", encoding='utf-8')

我这个中文乱码问题折腾了好久了,一直不行,最后是这样的:
将直接输出的文件用代码生成utf-8格式的,并将字体转为支持中文的字体,代码如下(忘记是参考的哪个博客了不好意思)

txt_dir = r'dot_data.txt'
txt_dir_utf8 = r'dot_data_utf8.txt'

with codecs.open(txt_dir, 'r',encoding='utf-8') as f, codecs.open(txt_dir_utf8, 'w', encoding='utf-8') as wf:
    for line in f:
        lines = line.strip().split('\t')
        print(lines)
        if 'label' in lines[0]:
            newline = lines[0].replace('\n', '').replace(' ', '')
        else:
            newline = lines[0].replace('\n','').replace('helvetica', 'Microsoft YaHei')
        wf.write(newline + '\t')

这么替换后可能字体那里少了引号会报错,所以在最前面Microsoft Yahei 那里修改一下,前后加上引号:fontname=“Microsoft YaHei”
然后再转化发现是报错如下:
在这里插入图片描述
然后在开头空了两格,也就是diagraph tree前面加了两个空格,然后就好了……好了……了……
如果png超出内存,pdf截断,可以转成svg格式用chrome打开

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值