图像分类(一)—KNN算法概述(附代码)

目录​​​​​​​

目录

一、理论知识

1、什么是KNN?

2、KNN算法的计算逻辑

3、距离度量(重点)

3.1 曼哈顿距离(Manhattan Distance)

3.2 欧式距离(Euclidean Metric)

二、分类器构建(代码实现)

1、显示训练数据

2、创建KNN分类器

3、测试数据

三、参考书籍​​​​​​​


一、理论知识

1、什么是KNN?

K—最近邻近算法(K- Nearest Neighbor, KNN):假设在一平面(图1)内,存在两种已知的样本数据(训练数据)类型,我们把蓝色的方块定义为A类样本数据,把橙色的菱形定义为B类样本数据。然而,在图1中,我们可以发现还存在一个红色的圆形(待预测的数据),我们怎么样才能知道它到底是属于A类(蓝色方块)还是B类(橙色菱形)呢?

KNN算法可以很好的解决这个问题,其核心思想就是可以通过选择周围的k个“邻居”,在k个最邻近的样本数据中选择所占比例最高的类别赋予预测数据。

具体来说,假设k=3(虚线圆圈),A类数据所占比例为1/3,B类数据所占比例为2/3,所以红色的圆形被赋予为B类;假设k=8(实线圆圈),A类数据所占比例为5/8,B类数据所占比例为3/8,所以红色的圆形被赋予为A类。

图1  KNN算法

2、KNN算法的计算逻辑

从上面的例子,我们可以简单的总结KNN算法的计算逻辑:

  • 计算训练数据与测试数据中每一个样本的距离(因为开始时,我们不知道哪些训练数据会成为最近的邻居,只有在计算出所有可能的距离之后,才能确定哪些是最近的k个邻居);
  • 选取距离测试数据最近的k个训练数据样本,作为“邻居”;
  • 选择所占比例最高的类别赋予测试数据。

因此,可以发现有两个因素可以直接决定KNN算法的准确性:

  • k值(“邻居”数量)的选择
  • 训练数据和测试数据中样本之间的距离

3、距离度量(重点)

在这里,对于k值(“邻居”数量)的选择先不展开赘述,主要探讨如何计算训练数据和测试数据中样本之间的距离。

3.1 曼哈顿距离(Manhattan Distance)

对于一个二维平面,假设有两个点\boldsymbol{\left ( x_1,y_1 \right )}\boldsymbol{\left ( x_2,y_2 \right )}。这两点之间的曼哈顿距离为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值