Python3.5在jupyter中使用graphviz画决策树(包括graphviz

您所在的位置:网站首页 Python画决策树 Python3.5在jupyter中使用graphviz画决策树(包括graphviz

Python3.5在jupyter中使用graphviz画决策树(包括graphviz

2023-08-11 12:06| 来源: 网络整理| 查看: 265

异常1:ExecutableNotFound: failed to execute [‘dot’, ‘-Tsvg’], make sure the Graphviz executables are on your systems

异常2:CalledProcessError: Command '['dot', '-Tsvg']' returned non-zero exit status 1. [stderr: b"Error: : syntax error in line 1 near 'None'\r\n"]

是否在使用graphviz遇上这两个问题?恭喜你,遇上才哥不迷路。

  首先异常1的原因是只安装了Python的graphviz第三方接口模块并没有安装graphviz画图软件

  异常2的原因主要为安装的graphviz软件不兼容当前的Python解释器或当前的graphviz第三个接口模块,最好的解决方法是换一个低版本的graphviz软件

    网上介绍异常二的另外一个原因是没有在tree.export_graphviz中添加out_file=None参数,(我个人测试是没有问题的,没有办法的时候可以试一下(如上白话文介绍没看懂的看下面代码))

今天想画一下决策树,结果发现graphviz不仅仅是安装一下模块这么简单,首先,graphviz是一个使用dot语言的画图编辑器,当然也可以执行dot文件。于是要想画决策树可以有多种方法。

1、使用Python生成dot文件后,通过graphviz的gvedit.exe可以图形化界面操作打开dot文件,然后就可以生成决策树图形

2、可以通过python的第三方模块,graphviz接口调用本地安装的graphviz软件,直接生成决策树图形

下面我们就来介绍一下如何在Python中使用graphviz画一颗决策树:(在网上看了许多博客都没有找到一个完整的介绍,失望!!!)

环境:

  系统:win7

  Python解释器版本:Python3.5,(Python解释器向下兼容,3.5以上均可)

  编辑环境:jupyter notebook,(在pycharm中运行后生成的是pdf文件,中文编码问题需要自己解决)

  graphviz版本:graphviz-2.38.msi,(实测现在官网发布的2.44.1安装后在Python3.5中运行时总会遇到CalledProcessError异常,所有建议通过graphviz-2.38.msi安装)

   以下提供graphviz-2.38安装包和中文教程

    链接:https://pan.baidu.com/s/1y8-Owj9UiwrWcyJ7VwY_4A     提取码:q6z0

1、首先我们需要安装graphviz-2.38软件:

  a.下载安装包后,傻瓜式安装,记住安装路径即可

  b.安装完成后,添加环境变量:(注意路径为自己安装路径下的bin目录)

    

   c.测试:(在cmd命名窗口输入dot -version)显示窗口如下,恭喜安装成功

  

  安装完成后我们可以使用图形化界面来打开dot文件或者使用dot语言编写图形:

  可以通过运行gvedit.exe文件打开图形化操作界面:

  

2、然后我们需要安装graphviz第三方模块:

  命令:pip install graphviz -i https://pypi.tuna.tsinghua.edu.cn/simple(这里网上各种介绍说安装python-graphviz或者是pygraphviz模块,但个人实测只能安装graphviz,其他两个模块安装报错)

  安装完成后即可在Python中调用画决策树

from sklearn import tree from sklearn.datasets import load_wine from sklearn.model_selection import train_test_split wine = load_wine() #区分数据集和测试集 Xtrain,Xtest,Ytrain,Ytest = train_test_split(wine.data,wine.target,test_size=0.3) clf = tree.DecisionTreeClassifier(criterion="entropy") clf = clf.fit(Xtrain,Ytrain) score = clf.score(Xtest,Ytest) feature_name = ['酒精','苹果酸','灰','灰的碱性','镁','总酚','类黄酮','非黄烷类酚类','花青素','颜色强度','色调','稀释葡萄酒','脯氨酸'] import graphviz #输出生成的决策树 dot_data = tree.export_graphviz(clf ,feature_names = feature_name ,class_names = ["琴酒","雪莉","贝尔摩德"] ,filled=True ,rounded=True ,out_file=None #---->(异常二的解决方法二) ,special_characters="utf-8" ) graph = graphviz.Source(dot_data) graph.view()

 

  切记重启一下开启jupyter notebook编辑页面的cmd窗口。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3