①【万字详解·附代码】机器学习分类算法之K近邻(KNN)

简介: 【万字详解·附代码】机器学习分类算法之K近邻(KNN)

k-NN 算法最简单的版本只考虑一个最近邻,也就是与我们想要预测的数据点最近的训练,数据点。预测结果就是这个训练数据点的已知输出。


image.png


什么是K近邻算法?

KNN的全称是K Nearest Neighbors,意思是K个最近的邻居,从这个名字我们就能看出一些KNN算法的蛛丝马迹了。K个最近邻居,毫无疑问,K的取值肯定是至关重要的。那么最近的邻居又是怎么回事呢?其实啊,KNN的原理就是当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别。


简单来说就是根据“距离”进行判别,看一下下面的示例图,也许你就懂了。


image.png


图中绿色的点就是我们要预测的那个点,假设K=3。那么KNN算法就会找到与它距离最近的三个点(这里用圆圈把它圈起来了),看看哪种类别多一些,比如这个例子中是蓝色三角形多一些,新来的绿色点就归类到蓝三角了


在介绍KNN算法的原理前,首先先介绍一些基本的概念


image.png


关于空间的一些基本概念

几何空间的五条公理

1.从一点向另一点可以引一条直线。

2.任意线段能无限延伸成一条直线。

3.给定任意线段,可以以其一个端点作为圆心,该线段作为半径作一个圆。

4.所有直角都相等。

5.若两条直线都与第三条直线相交,并且在同一边的内角之和小于两个直角,则这两条直线在这一边必定相交


向量空间又分为下面三种:


image.png


维度


image.png


向量

空间中具有大小和方向的量叫做空间向量

我们可以想象我们我们所分析的数据的每一个属性视为一个向量维度,我们输入的数据其实是某个高维向量空间中的一个点



关于距离的一些基本概念

很多基于向量空间的分类器在分类决策时用到距离的概念。

1、欧氏距离(Euclidean distance)

2、曼哈顿距离(Manhattan Distance)

3、切比雪夫距离 (Chebyshev Distance)

4、闵可夫斯基距离(Minkowski Distance)

5、杰卡德距离(Jaccard Distance)

6、余弦距离(Cosine Distance)

7、相关距离(Correlation distance)

8、汉明距离(Hamming Distance)


欧氏距离(Euclidean distance

两个点在空间中的最短直线距离


image.png


image.png


曼哈顿距离(Manhattan Distance)

又称 “城市街区距离”(City Block distance)或“出租车距离”,指从一个十字路口开车到另一个十字路口的驾驶距离,显然不是两点间直线距离。


image.png


(1) 二维平面两点a(x1,y1)与b(x2,y2)间的曼哈顿距离:


image.png


(2) n维空间点a(x11,x12,…,x1n)与b(x21,x22,…,x2n)的曼哈顿距离:


image.png


切比雪夫距离 (Chebyshev Distance)

国际象棋中,国王可以直行、横行、斜行,所以国王走一步可以移动到相邻8个方格中的任意一个。国王从格子(x1,y1)走到格子(x2,y2)最少需要多少步?这个距离就叫切比雪夫距离。




image.png


闵可夫斯基距离(Minkowski Distance)

闵氏距离不是一种距离,而是一组距离的定义,是对多个距离度量公式的概括性的表述。


两个n维变量a(x11,x12,…,x1n)与b(x21,x22,…,x2n)间的闵可夫斯基距离定义为:


image.png


其中p是一个变参数:

当p=1时,就是曼哈顿距离;

当p=2时,就是欧氏距离;

当p→∞时,就是切比雪夫距离。


image.png

杰卡德距离(Jaccard Distance)

杰卡德相似系数(Jaccard similarity coefficient):两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示:


image.png


杰卡德距离(Jaccard Distance):与杰卡德相似系数相反,用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度:


image.png


杰卡德相似系数和杰卡德距离的用途


可将杰卡德相似系数用在衡量样本的相似度上。

假设:样本A与样本B是两个n维向量,而且所有维度的取值都是0或1。例如:A(0111)和B(1011)。我们将样本看成是一个集合,1表示集合包含该元素,0表示集合不包含该元素。那么样本A与B的杰卡德相似系数可以表示为:


image.png


杰卡德距离等于1-J


说明:


P:样本A与B都是1的维度的个数


q:样本A是1,样本B是0的维度的个数


r:样本A是0,样本B是1的维度的个数


s:样本A与B都是0的维度的个数


相关文章
|
2月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
117 4
|
16天前
|
算法
PAI下面的gbdt、xgboost、ps-smart 算法如何优化?
设置gbdt 、xgboost等算法的样本和特征的采样率
39 2
|
2月前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
51 1
|
2月前
|
机器学习/深度学习 自然语言处理 算法
深入理解机器学习算法:从线性回归到神经网络
深入理解机器学习算法:从线性回归到神经网络
|
2月前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
105 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
2月前
|
机器学习/深度学习 算法
深入探索机器学习中的决策树算法
深入探索机器学习中的决策树算法
42 0
|
2月前
|
机器学习/深度学习 算法 Python
机器学习入门:理解并实现K-近邻算法
机器学习入门:理解并实现K-近邻算法
39 0
|
3月前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
3月前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
81 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
2月前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的决策树算法
【10月更文挑战第29天】本文将深入浅出地介绍决策树算法,一种在机器学习中广泛使用的分类和回归方法。我们将从基础概念出发,逐步深入到算法的实际应用,最后通过一个代码示例来直观展示如何利用决策树解决实际问题。无论你是机器学习的初学者还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和指导。