KNN算法简介

news/2025/1/11 14:30:47/

1,基本概念

邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。KNN 算法本身简单有效,它是一种 lazy-learning 算法,分类器不需要使用训练集进行训练,训练时间复杂度为0,KNN 分类的计算复杂度和训练集中的文档数目成正比,也就是说,如果训练集中文档总数为 n,那么 KNN 的分类时间复杂度为O(n)

由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。

2,算法思想

下图图中,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类。
在这里插入图片描述
KNN算法不仅可以用于分类,还可以用于回归。通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成反比。

3,算法流程

(1)计算已知类别数据集中的点与当前点的距离
(2)按照距离依次排序
(3)选取与当前点距离最小的K个点
(4)确定前K个点所在类别的出现概率
(5)返回前K个点出现频率最高的类别作为当前点预测分类。

4,,算法的基本要素

K 值的选择,距离度量和分类决策规则是该算法的三个基本要素;

存在的问题:

该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的 K 个邻居中大容量类的样本占多数。

解决办法:对不同的样本给予不同权重项

5,图像分类

CIFAR-10数据集:10类标签;50000个训练数据;10000个测试数据;大小均为32*32

预处理你的数据:对你数据中的特征进行归一化(normalize),让其具有零平均值(zero mean)和单位方差(unit variance)如果数据是高维数据,考虑使用降维方法,比如PCA。
在这里插入图片描述
将数据随机分入训练集和验证集。按照一般规律,70%-90% 数据作为训练集
在这里插入图片描述
超参数(距离设定和K的选择):
在这里插入图片描述可以利用交叉验证调节这些超参数:

在这里插入图片描述将原始训练集分为训练集和验证集,我们在验证集上尝试不同的超参数,最后保留表现最好那个,使用交叉验证方法,它能帮助我们在选取最优超参数的时候减少噪音。交叉验证的结果展示:
在这里插入图片描述
一旦找到最优的超参数,就让算法以该参数在测试集跑且只跑一次,并根据测试结果评价算法


http://www.ppmy.cn/news/611796.html

相关文章

微信小程序scroll-view的使用

这边博客主要是对微信小程序文档的的使用心得 官网地址 demo效果 一些属性 scroll-top 和属性,设置竖向滚动条的位置,就是第一次进来的时候,还没有滑动的时候view的位置 假如不设置默认在第一位置,如果想显示中间的或者其他的位置,就可以使用此属性 scroll-into-view 这个就…

RGB Color Codes Chart

RGB Color Codes Chart RGB颜色空间 RGB颜色空间或RGB颜色系统,从红色、绿色和蓝色的组合中构造所有颜色。 红色、绿色和蓝色各使用8位,它们的整数值从0到255。这使得25625625616777216可能的颜色。 RGB≡红、绿、蓝 LED显示器中的每个像素都是通过…

tomcat与resin的比较

tomcat与resin的比较 - java的涟漪 - CSDN博客https://blog.csdn.net/rogerjava/article/details/7652347 Cauchohttp://caucho.com/ Resin Pro Download | Cauchohttps://caucho.com/products/resin/download转载于:https://www.cnblogs.com/rgqancy/p/10412008.html

线性分类

1,基本概念 在机器学习领域,分类的目标是指将具有相似特征的对象聚集。而一个线性分类器则透过特征的线性组合来做出分类决定,以达到此种目的。对象的特征通常被描述为特征值,而在向量中则描述为特征向量。 2,线性分类…

微信小程序下拉刷新和上拉加载

效果图 微信小程序实现下拉刷新和上拉加载有2中方法 1 用系统自带的 个人感觉特别简单 2 使用scroll-view 实现, scroll-view 里面有2个属性是滑动到顶部以及到底部如下 其实就是滑动到顶部和底部的时候请求网络,就行了, 第一种方法说明: 在json里面先声明这个界面要用到刷…

mybatis逆向工程配置文件怎么再偷懒(懒出天际)

使用mybatis逆向工程时,需要在逆向工程配置文件那里指定要对那些表进行逆向工程,如果数据表很多的话,一个一个地写有点麻烦,为什么不自动生成这些XML字段呢 (我的需求是,将数据表首字母大写,然后…

色彩(颜色)空间原理(上)

色彩(颜色)空间原理(上) RGB色彩空间转换 我最近在进行色彩科学方面的工作,当您要正确使用数字色彩值时,从一种色彩空间转移到另一种色彩空间成为一种常见操作。通常,我们只是将数字颜色视为R…

Softmax分类器及最优化

1,基本内容 将线性分类得到的得分值转化为概率值,进行多分类,在SVM中的输出是得分值,Softmax的输出是概率。 2,Sigmoid函数 表达式(值域为[0,1]): 函数图像: Sigmoid函数可将任意…