python-Machine learning DecisionTree for Mac jupyter notebook to solve error [View model].

前提提要 在学习机器学习skicit-learn实战决策树时在Mac Catalina OS 10.15以上操作系统、python 3.8、jupyter是2.6、skicit-learn是去年安装的等等,pages一切正常但在graphviz画图仍然会报如下错误

'...ExecutableNotFound: failed to execute ['dot', '-Tsvg'], make sure the Graphviz executables are on your systems' PATH'
大家学习机器学习实战估计也都是这一个代码,但幕内大佬已经画出来了,我却卡在这里了,而且没法说,只能自己瞎找,open了一下terminal才发现并没有graphviz文件,甚至anaconda都没安装,,,更用不了jupyter运行环境了,话不多说从头开始弄吧。

1、下载anaconda并安装jupyter运行环境

这一步十分简单的,给你们一个网站自行下载即可
anaconda由此下载
这里有一个需要注意的是:首先要保证你的python版本最低也不能低于3.6应该都是3.8的,否则没法运行jupyter notebook。你可以下载那个shell文件然后打开就会自动打开terminal进行安装。完成后会在application(应用程序)页面上看到这个标识。在这里插入图片描述

2、敲入代码(需要的我放在后面了)

3、发现错误error

这时如果不出意外的话会有如下错误

---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
~/opt/anaconda3/lib/python3.8/site-packages/graphviz/backend.py in run(cmd, input, capture_output, check, encoding, quiet, **kwargs)
    163     try:
--> 164         proc = subprocess.Popen(cmd, startupinfo=get_startupinfo(), **kwargs)
    165     except OSError as e:

~/opt/anaconda3/lib/python3.8/subprocess.py in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors, text)
    853 
--> 854             self._execute_child(args, executable, preexec_fn, close_fds,
    855                                 pass_fds, cwd, env,

~/opt/anaconda3/lib/python3.8/subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, start_new_session)
   1701                         err_msg = os.strerror(errno_num)
-> 1702                     raise child_exception_type(errno_num, err_msg, err_filename)
   1703                 raise child_exception_type(err_msg)

FileNotFoundError: [Errno 2] No such file or directory: 'dot'

During handling of the above exception, another exception occurred:

ExecutableNotFound                        Traceback (most recent call last)
~/opt/anaconda3/lib/python3.8/site-packages/IPython/core/formatters.py in __call__(self, obj)
    343             method = get_real_method(obj, self.print_method)
    344             if method is not None:
--> 345                 return method()
    346             return None
    347         else:

~/opt/anaconda3/lib/python3.8/site-packages/graphviz/files.py in _repr_svg_(self)
    111 
    112     def _repr_svg_(self):
--> 113         return self.pipe(format='svg').decode(self._encoding)
    114 
    115     def pipe(self, format=None, renderer=None, formatter=None, quiet=False):

~/opt/anaconda3/lib/python3.8/site-packages/graphviz/files.py in pipe(self, format, renderer, formatter, quiet)
    134         data = text_type(self.source).encode(self._encoding)
    135 
--> 136         out = backend.pipe(self._engine, format, data,
    137                            renderer=renderer, formatter=formatter,
    138                            quiet=quiet)

~/opt/anaconda3/lib/python3.8/site-packages/graphviz/backend.py in pipe(engine, format, data, renderer, formatter, quiet)
    242     """
    243     cmd, _ = command(engine, format, None, renderer, formatter)
--> 244     out, _ = run(cmd, input=data, capture_output=True, check=True, quiet=quiet)
    245     return out
    246 

~/opt/anaconda3/lib/python3.8/site-packages/graphviz/backend.py in run(cmd, input, capture_output, check, encoding, quiet, **kwargs)
    165     except OSError as e:
    166         if e.errno == errno.ENOENT:
--> 167             raise ExecutableNotFound(cmd)
    168         else:
    169             raise

ExecutableNotFound: failed to execute ['dot', '-Tsvg'], make sure the Graphviz executables are on your systems' PATH

4、如何解决?(令人抓狂时刻)

很多人好不容易走到这一步了,但还是没办法逃避掉第三步的错误,win系统是可以在系统内直接手动修改环境变量的,Mac OS不行!
哎,这就很烦,因此我也为此抓狂了很久,然后我看到了一个大佬的文章有写有关Mac OS的环境配置
于是我也按照他写的进行一步步操作,大佬链接,然后便开始下载brew命令文件

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

呃,你们下载就知道多大了,不出意外没个小半天下不完除非你网速贼快。
好了,终于下完了,可以安装conda了于是进行安装conda文件(说明一下为啥我先安装的conda,因为conda文件少,安装快,后期安装完就可以直接下次打开用)

~ cd /usr/local/Mac/anaconda3.0
~ pip install conda
~ ...忽略

然后用brew安装graphviz包(Mac用brew是真的绝了,省去了很多麻烦的步骤,很良心!)

~ brew install graphviz

安装后系统会自动把graphviz文件添加到Celler内,不用管了
然后就可以进行对graphviz进行配置了
打开terminal
输入

sudo vim .bash_profile

然后输入密码,然后输入
i
然后随便找一个空行把下面的代码复制进去

export PATH="/usr/local/bin:$PATH"

然后输入
:wq
保存并退出
然后输入

source .bash_profile

然后关掉就可以了配置完成,打开anaconda,点击Environment,打开terminal输入

conda install python-graphviz

即可配置到anaconda中,然后打开jupyter nodebook
再重新跑一遍,就可以了~
end~
附录一(附决策树代码):

### coding in utf-8
from sklearn import tree
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split

wine = load_wine()

import pandas as pd

pd.concat([pd.DataFrame(wine.data), pd.DataFrame(wine.target)], axis=1)

Xtrain, Xtest, Ytrain, Ytest = train_test_split(wine.data, wine.target, test_size=0.3)
#训练集构造 test_size=0.3是训练与目标三七分#

clf = tree.DecisionTreeClassifier(criterion="gini")
#构造决策树数学模型 参数是信息熵#
clf = clf.fit(Xtrain, Ytrain)
#训练模型 fit是训练接口#
score = clf.score(Xtest, Ytest)
#为模型打分#


#画决策树#
import graphviz
from graphviz import Digraph
feature_name = ['酒精','苹果酸','灰','灰的碱性','镁','总酚','类黄酮','非黄烷类酚类','花青素','颜色强度','色调','稀释葡萄酒','脯氨酸']

data_dot = tree.export_graphviz(clf, feature_names=feature_name,
                                class_names=["啤酒","葡萄酒","果酒"],
                                filled=True, rotate=True)
graph = graphviz.Source(data_dot)

graph
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值