机器学习入门指南它来了
机器学习算法课程定位、⽬标
定位
课程以算法、案例为驱动的学习,伴随浅显易懂的数学知识
作为⼈⼯智能领域的提升课程,掌握更深更有效的解决问题技能
⽬标
掌握机器学习常⻅算法原理
应⽤Scikit-learn实现机器学习算法的应⽤,
结合场景解决实际问题
K-近邻算法
学习⽬标
掌握K-近邻算法实现过程
知道K-近邻算法的距离公式
知道K-近邻算法的超参数K值以及取值问题
知道kd树实现搜索的过程
应⽤KNeighborsClassifier实现分类
知道K-近邻算法的优缺点
知道交叉验证实现过程
知道超参数搜索过程
应⽤GridSearchCV实现算法参数的调优
1.1 K-近邻算法简介
K-近邻算法(KNN)概念
K Nearest Neighbor算法⼜叫KNN算法,这个算法是机器学习⾥⾯⼀个⽐较经典的算法, 总体来说KNN算法是相对⽐
较容易理解的算法
定义
如果⼀个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的⼤多数属于某⼀个类别,则该样本也属于这个
类别。
来源:KNN算法最早是由Cover和Hart提出的⼀种分类算法
距离公式
两个样本的距离可以通过如下公式计算,⼜叫欧式距离
KNN算法流程总结
1)计算已知类别数据集中的点与当前点之间的距离
2)按距离递增次序排序
3)选取与当前点距离最⼩的k个点
4)统计前k个点所在的类别出现的频率
5)返回前k个点出现频率最⾼的类别作为当前点的预测分类
k近邻算法api初步使用
学习⽬标
⽬标
了解sklearn⼯具的优点和包含内容
应⽤sklearn中的api实现KNN算法的简单使⽤
1.获取数据集
2.数据基本处理
3.特征⼯程
4.机器学习
5.模型评估
Scikit-learn⼯具介绍
9k近邻算法api初步使⽤
Python语⾔的机器学习⼯具
Scikit-learn包括许多知名的机器学习算法的实现
Scikit-learn⽂档完善,容易上⼿,丰富的API
⽬前稳定版本0.19.1
1.1 安装
pip3 install scikit-learn==0.19.1
安装好之后可以通过以下命令查看是否安装成功
import sklearn
注:安装scikit-learn需要Numpy, Scipy等库
1.2 Scikit-learn包含的内容
分类、聚类、回归
10k近邻算法api初步使⽤
特征⼯程
模型选择、调优
2 K-近邻算法API
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)
n_neighbors:int,可选(默认= 5),k_neighbors查询默认使⽤的邻居数
代码过程
导⼊模块
from sklearn.neighbors import KNeighborsClassifier
构造数据集
x = [[0], [1], [2], [3]]
y = [0, 0, 1, 1]
机器学习 -- 模型训练
# 实例化API
estimator = KNeighborsClassifier(n_neighbors=1)
# 使⽤fit⽅法进⾏训练
estimator.fit(x, y)
estimator.predict([[1]])
selenium 库驱动浏览器
selenium库是一种用于Web应用程序测试的工具,它可以驱动浏览器执行特定操作,自动按照脚本代码做出单击、输入、打开、验证等操作,支持的浏览器包括IE、Firefox、Safari、Chrome、Opera等。而在办公领域中如果经常需要使用浏览器操作某些内容,就可以使用selenium库来实现,例如将大量数据上传到网页中或者实现自动驱动浏览器进行操作。
与requests库不同的是,selenium库是基于浏览器的驱动程序来驱动浏览器执行操作的。且浏览器可以实现网页源代码的渲染,因此通过selenium库还可以轻松获取网页中渲染后的数据信息。
使用 selenium 库前的准备
了解 selenium 库驱动浏览器的原理
浏览器是在浏览器内核基础之上开发而成的,测览器内核主要负责对网页语法进行哪释并谊类(显示)网洲如360浏览器和Chr0me浏览器都使用Chrome内核,如图15-26阳图15-27所示;丽QQ洲览器使用1E内m.,safari浏览器使用Webkit内核
然浏览器内核可以被selenium库驱动,但还是需要安装对应版本的测览器内核驱动程序,以便于控制web浏览器的行为。每个浏览器都有一个特定的用于支持测览器运行的WebDriver,被称为驱动程序(可以进入selenium库的官网进行下载,如果下载失败或无法匹配版本,还可以尝试下面介绍的相关方法)。
距离度量
距离公式的基本性质
在机器学习过程中,对于函数 dist(., .),若它是⼀"距离度量" (distance measure),则需满⾜⼀些基本性质:
⾮负性: dist(Xi, Xj) >= 0 ;
同⼀性:dist(xi, xj) = 0。当且仅当 Xi = Xj ;
对称性: dist(xi, xj) = dist(xj , xi);
直递性: dist(xi, xj) <= dist(xi, xk) + dist(xk, xj)
直递性常被直接称为“三⻆不等式”
常⻅的距离公式
2.1 欧式距离(Euclidean Distance):
欧⽒距离是最容易直观理解的距离度量⽅法,我们⼩学、初中和⾼中接触到的两个点在空间中的距离⼀般都是指欧⽒距离。
举例:
X=[[1,1],[2,2],[3,3],[4,4]];
经计算得:
d = 1.4142 2.8284 4.2426 1.4142 2.8284 1.4142
举例:
X=[[1,1],[2,2],[3,3],[4,4]];
经计算得:
d = 2 4 6 2 4 2
际象棋中,国王可以直⾏、横⾏、斜⾏,所以国王⾛⼀步可以移动到相邻8个⽅格中的任意⼀个。国王从格⼦(x1,y1)
⾛到格⼦(x2,y2)最少需要多少步?这个距离就叫切⽐雪夫距离。
X=[[1,1],[2,2],[3,3],[4,4]];
经计算得:
d = 1 2 3 1 2 1
闵可夫斯基距离(Minkowski Distance):
闵⽒距离不是⼀种距离,⽽是⼀组距离的定义,是对多个距离度量公式的概括性的表述。
两个n维变量a(x11,x12,…,x1n)与b(x21,x22,…,x2n)间的闵可夫斯基距离定义为:
其中p是⼀个变参数:
当p=1时,就是曼哈顿距离;
当p=2时,就是欧⽒距离;
当p→∞时,就是切⽐雪夫距离。
根据p的不同,闵⽒距离可以表示某⼀类/种的距离。
⼩结:
1 闵⽒距离,包括曼哈顿距离、欧⽒距离和切⽐雪夫距离,都存在明显的缺点:
e.g. ⼆维样本(身⾼[单位:cm],体重[单位:
切⽐雪夫距离 (Chebyshev Distance):
国际象棋中,国王可以直⾏、横⾏、斜⾏,所以国王⾛⼀步可以移动到相邻8个⽅格中的任意⼀个。国王从格⼦(x1,y1)
⾛到格⼦(x2,y2)最少需要多少步?这个距离就叫切⽐雪夫距离。
X=[[1,1],[2,2],[3,3],[4,4]];
经计算得:
d = 1 2 3 1 2 1
闵可夫斯基距离(Minkowski Distance):
闵⽒距离不是⼀种距离,⽽是⼀组距离的定义,是对多个距离度量公式的概括性的表述。
两个n维变量a(x11,x12,…,x1n)与b(x21,x22,…,x2n)间的闵可夫斯基距离定义为:
其中p是⼀个变参数:
当p=1时,就是曼哈顿距离;
当p=2时,就是欧⽒距离;
当p→∞时,就是切⽐雪夫距离。
根据p的不同,闵⽒距离可以表示某⼀类/种的距离。
⼩结:
1 闵⽒距离,包括曼哈顿距离、欧⽒距离和切⽐雪夫距离,都存在明显的缺点:
e.g. ⼆维样本(身⾼[单位:cm],体重[单位:kg]),现有三个样本:a(180,50),b(190,50),c(180,60)。
a与b的闵⽒距离(⽆论是曼哈顿距离、欧⽒距离或切⽐雪夫距离)等于a与c的闵⽒距离。但实际上身⾼的10cm并不能
和体重的10kg划等号。
2 闵⽒距离的缺点:
(1)将各个分量的量纲(scale),也就是“单位”相同的看待了;
(2)未考虑各个分量的分布(期望,⽅差等)可能是不同的。