KNN算法实例

195 阅读2分钟

「这是我参与11月更文挑战的第12天,活动详情查看:2021最后一次更文挑战

KNN是什么?

KNN是通过测量不同特征值之间的距离进行分类。它的的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。K通常是不大于20的整数。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。

那么K值有什么影响?

K 值比较小,就相当于未分类物体与它的邻居非常接近才行。这样产生的一个问题就是,如果邻居点是个噪声点,那么未分类物体的分类也会产生误差,这样 KNN 分类就会产生过拟合。 K 值比较大,相当于距离过远的点也会对未知物体的分类产生影响,虽然这种情况的好处是鲁棒性强,但是不足也很明显,会产生欠拟合情况,也就是没有把未分类物体真正分类出来。

接下来让我们用实例来演算KNN算法

使用下表给出的样本数据,采用KNN算法对元组<陶陶,M,1.86>进行分类,只用身高参与距离计算,K=3

序号姓名性别身高类别
1张红F1.6Short
2王帅M2Tall
3马华F1.65Medium
4刘晓F1.75Tall
5高源F1.5Short
6刘海M1.75Medium
7赵璐F1.55Short
8郭好M1.7Short
9李汉M1.95Tall
10刘军M2.0Tall

只用高度参与距离计算, k=3。跟踪 KNN算法执行如下:

(1)对前 3个记录, N={<张红,F, 1.60>,<王帅,M,2>,<马华,F,1.65>}

(2)对第4个记录 =<刘晓,F,1.75>,相比测试记录<陶陶,M,1.86>,需要替换掉N中和测试记录差别最大的< 张红,F,1.6>,得到 N={<刘晓,F,1.75>,<王帅,M,2>,<马华,F,1.65>}。

(3)第5个记录 =<高源,F,1.50>,没变化

(4)对第6个记录 =<刘海,M,1.75>,需要替换掉<马华,F,1.65>,得到N ={<刘晓,F,1.75>,<王帅,M,2>,<刘海,M,1.75>}。

(5)对第7、8个记录,没变化。

(6)对第9个记录 =<李汉,M,1.95>,需要替换掉<王帅,M,2>,得到N ={<刘晓,F,1.75>,<李汉,M,1.95>,<刘海,M,1.75>}。

(7)对第10个记录 ,没变化。

(8)最后输出N={<刘晓,F,1.75>,<李汉,M,1.95>,<刘海,M,1.75>},这三项中两个属于Tall,一个属于Medium,所以<陶陶,M,1.86>属于Tall。