• 树模型的可视化


    准备工作

    sklearn 中决策树的可视化需要安装 graphviz

    下载安装 graphviz

    官网下载地址 http://www.graphviz.org/

    官网经常升级,选择适合自己的版本,我选择版本的下载地址 https://www2.graphviz.org/Packages/stable/windows/10/cmake/Release/x64/

    双击安装即可

    设置环境变量

    方式1:安装时可选择 把安装路径添加到环境变量

    方式2:手动添加环境变量到 PATH

    检测是否安装成功

    命令行任意路径下输入如下命令

    如果没有安装好,按提示执行命令即可

    有时候即使安装好了,代码执行仍然不成功,加入如下代码试试

    os.environ["PATH"] += os.pathsep + r'C:Program FilesGraphviz 2.44.1in'

    C:Program FilesGraphviz 2.44.1 为安装路径 

    dot 命令的作用是将 dot 文件转换成 pdf 或者 png

    dot -Tpdf iris.dot -o iris.pdf

    随机森林可视化

    使用 scikit-learn 时没有直接的方法显示随机森林,只能拆解成单棵树来显示;使用随机森林的属性clf.estimators_获取随机森林的决策树列表

    示例代码

    import os
    from sklearn.datasets import load_iris
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.tree import export_graphviz
    
    # 系统环境变量添加Graphviz安装路径,以便下面代码可以用dot命令
    os.environ["PATH"] += os.pathsep + 'D:/Program Files (x86)/Graphviz2.38/bin'
    
    iris = load_iris()
    X, y = iris.data, iris.target
    model = RandomForestClassifier(n_estimators=3, max_features=1)
    model.fit(X, y)
    
    # 循环打印每棵树
    for idx, estimator in enumerate(model.estimators_):
        # 导出dot文件
        export_graphviz(estimator,
                        out_file='tree{}.dot'.format(idx),
                        feature_names=iris.feature_names,
                        class_names=iris.target_names,
                        rounded=True,
                        proportion=False,
                        precision=2,
                        filled=True)
        # 转换为png文件
        os.system('dot -Tpng tree{}.dot -o tree{}.png'.format(idx, idx))

    或者(接上面代码)

    import graphviz
    trees = model.estimators_[2]
    gra_data = export_graphviz(trees, feature_names=['花萼长度','花萼宽度','花瓣长度','花瓣宽度'])
    # 因为标签是中文所以需要将参数设置成支持微软雅黑的格式
    # gra_data = gra_data.replace('helvetica','"Microsoft Yahei"')
    grap = graphviz.Source(gra_data)
    # graph.render(filename ="iris", directory ='./', format='pdf')     保存图片
    grap.render('forest')

    决策树

    同随机森林

    中文乱码

    上面的代码如果不行,执行如下操作

    notepade 打开 dot 文件,手动修改

    digraph Tree {
    node [shape=box, style="filled, rounded", color="black", fontname=helvetica] ;
    edge [fontname=helvetica] ;

    把 fontname=helvetica 改成 fontname="Microsoft YaHei";

    如果没有 fontname=helvetica,直接添加  fontname="Microsoft YaHei";

    然后执行 dot 命令,如

    dot -Tjpg Tree_utf8.dot -o tree1.jpg

    参考资料:

    https://blog.csdn.net/ydyang1126/article/details/78842952  决策树、随机森林结果可视化

    https://blog.csdn.net/guolindonggld/article/details/101135001  随机森林可视化

    https://my.oschina.net/u/3896378/blog/4445876  GraphViz可视化决策树和随机森林

    https://graphviz.readthedocs.io/en/stable/api.html#  graphviz 使用文档官网

  • 相关阅读:
    STL——(4)deque
    Windows Server服务器日常管理技巧
    各种服务器伪静态配置方法
    DedeCMS V5.7开启memcache缓存的方法配置说明
    windows服务器下iis的性能优化 服务器
    网站出现service unavailable的解决方法
    【ThinkPHP框架学习 】(2) --- 后台管理系统如何用iframe点击左边右边局部刷新
    【ThinkPHP框架学习 】(1) --- thinkphp 3.2.3 验证码验证使用教程分享
    走着走着,已经到了玩不起的年龄 —— 致自己
    PHP常用数组(Array)函数整理
  • 原文地址:https://www.cnblogs.com/yanshw/p/14267964.html
Copyright © 2020-2023  润新知