文章目录
- 一.Python环境搭建
- sklearn库的安装
- 环境变量的设置
- 测试
- 决策树的使用
- 测试代码
- 测试一
- 测试二
因为要使用机器学习来完成一些事情,所以最近开始进行机器学习环境的搭建.
笔者是python小白,纯小白,白的不能再白.所以把自己的安装历程记录下来,供大家参考.
笔者的环境是win10+vs2019
一.Python环境搭建
vs2019支持python编程,所以按照下方图片所示即可完成
勾选点击安装即可完成python环境的搭建.
sklearn库的安装
从这里开始就是非常肉疼的地方了.
先要知道第三方库在哪里安装
就会得到如图所示的界面
这里我们需要关注两个地方:
1.你的python版本,例如我的就是3.7,64位的,这个要知道,因为后面需要用到.
2.包PyPi这个框.你可以在搜索框里直接搜索你想安装的库.不过这个东西就是最让人肉疼的.慎用
安装库的方式有两种,1.就是在搜索框里输入你想要安装的库,剩下的交给vs自己做,你最多就是提供个权限.但是安装第三方库总是会失败,所以基本上是个摆设.2.点击包(PyPI),点击概述,如图
就会得到如图所示的画面
点击PowerShell,你就会得到一个蓝色的对话框,如图
这个应该是和Linux上的终端差不多,可以接受指令.你可以用过输入指令来下载
例如 : pip install --user --index https://pypi.mirrors.ustc.edu.cn/simple/ pandas
这个pandas库也是机器学习需要的,你得安装
这个网址是可以更改的
你如果这样做了,你会发现还是不行.那是因为你没有添加环境变量.
你需要按照如下步骤进行操作.
环境变量的设置
找到你python安装的地方,找到scripts文件夹,复制他的路径
例如:C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\Scripts
你的可能在其他的地方,找到即可.
然后将它添加到环境变量中
添加完成之后点击确定即可.这样你就能pip 第三方库了.
然后进入正题
sklearn库是在Numpy、Scipy和matplotlib的基础上开发而成的,因此在介绍sklearn的安装前,需要先安装这些依赖库。
所以你需要依次安装:Pandas库 , Numpy库(这里需要注意,不是单纯的numpy库,是numpy+mkl库) , Scipy库 , matplotlib库 , sklearn库
这里先给你提供一个网址,这是一个国外网站,你可以在上面下载到任何你想添加的第三方库.
在这个网站下载就会出现一个问题,“下载哪一个?”.这里给你解释一下
以numpy库为例,你所需要下载的不是单纯的numpy库,而是,numpy+mkl库,所以你在网站中可以看到
那如何来选择
上面我们提过,需要知道自己python的版本和位数,那这里就用到了
你在下载的时候就会发下,速度那是极其的慢,而且伴随着无限的失败.
那么这里就给你提供两种方法
1.通过vpn来进行下载
2.拿我的现成的(Python3.7 64位) , 链接:https://pan.baidu.com/s/1xWFA0lwvxM0liaQQB1fSBA 提取码:jaxn
网盘里还有需要出现图形化界面的graphviz的安装程序.(你可能需要)
下载完成之后进行安装,通过vs2019的PowerShell进行安装
你需要先知道下载在什么地方,例如我的是在 D:\火狐下载\deeplearn
这里需要解释一下,原来不是叫deeplearn的文件夹,是中文的,然后在PowerShell中就是找不到,没办法换了个英文的名称
打开PowerShell中,你会发现你的位置并不在下载库的位置,所以需要用到 cd 命令
cd 绝对路径
如 : cd D:\火狐下载\deeplearn 你就能到达下载库位置
但笔者在操作时,绝对路径不能到达.只能一步一步走
你可以使用
cd … (注意有两个点)
来退到上一层目录,然后继续使用 cd … 直到退到C:
然后cd D: (就能进入到D盘)
使用ls命令可以看到当前目录的文件,所需要的都在
然后按照之前的顺序进行安装
这个是支持Tab补全的,你输入一部分,按下tab键就能补全,然后回车安装即可
测试
from sklearn import svm
X = [[0, 0], [1, 1]]
y = [0, 1]
clf = svm.SVC()
clf.fit(X, y)
clf.predict([[2., 2.]])
在vs2019的交互窗口中输入,如图
输出array([1]),就说明成了.
决策树的使用
这篇帖子中的.所以还需要安装graphviz. 之前在我的网盘里已经放了安装包(官网下载太慢了),下载安装即可.它还需添加环境变量,需要找到安装目录下的bin文件夹.例如: E:\graphviz\bin
复制路径将它添加到环境变量中.方法前面已经说过了.
测试代码
测试一
#-*- coding: utf-8 -*-
from itertools import product
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.tree import DecisionTreeClassifier
# 仍然使用自带的iris数据
iris = datasets.load_iris()
X = iris.data[:, [0, 2]]
y = iris.target
# 训练模型,限制树的最大深度4
clf = DecisionTreeClassifier(max_depth=4)
#拟合模型
clf.fit(X, y)
# 画图
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1),
np.arange(y_min, y_max, 0.1))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.4)
plt.scatter(X[:, 0], X[:, 1], c=y, alpha=0.8)
plt.show()
运行结果:
测试二
#-*- coding: utf-8 -*-
from itertools import product
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.tree import DecisionTreeClassifier
from IPython.display import Image
from sklearn import tree
import pydotplus
import os
os.environ["PATH"] += os.pathsep + 'G:/program_files/graphviz/bin'
# 仍然使用自带的iris数据
iris = datasets.load_iris()
X = iris.data
y = iris.target
# 训练模型,限制树的最大深度4
clf = DecisionTreeClassifier(max_depth=4)
#拟合模型
clf.fit(X, y)
dot_data = tree.export_graphviz(clf, out_file=None,
feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True,
special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data)
# 使用ipython的终端jupyter notebook显示。
Image(graph.create_png())
# 如果没有ipython的jupyter notebook,可以把此图写到pdf文件里,在pdf文件里查看。
graph.write_pdf("iris.pdf")
运行结果
#使用ipython的终端jupyter notebook显示。
Image(graph.create_png())
这句因为这个jupyter notebook搭建有问题,所以没有显示,但是这个大佬提供了将结果写到pdf中,照样可以测试结果
结果显示正常
这就说明环境搭建的很成功
因为在没有找到这段代码的时候,我用的其他的代码有一个问题
#原始DataFrame
import pandas as pd
import numpy as np
df=pd.DataFrame(np.arange(12).reshape(3,4))
#df.as_matrix() 方法已经被淘汰
df.values
x= df.iloc[:,0:3].values
print(x)
在这段代码中,这个df.as_matrix()在python3.7中已经没有了.你是调用不出来的,去查阅资料发现,这种方式已经被淘汰了,现在好像是用df.values来代替.而且笔者也测试了,确实是第二种能用.
因为之前还加了很多的其他库,像jupyter,wheel,IPython这些,都得好像也没有按照代码(Image(graph.create_png()))提示显示出来,目前还不知道是哪出了问题.