knn算法理解

knn(k-NearestNeighbor):邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。

   理解:计算出每个预测对象临近对象(已知类型)的对象,在限定k值(邻居数量)的条件下,预测对象的类型,被判定为k个最近的邻居中类型占比最大的那种类型。  

理解示例: 每个人已知三个特征:“身高(cm)”,“每天饮食量(kg)”,“每天跑步里程(km)”,预测张小明(15)体重是“胖”还是“瘦”。现有5个已知胖瘦的人信息,具体数据信息如下:

姓名 体重类型
东方不败(165,4,10)
独孤求败(175,3,12)
西门吹雪(154,4,10)
令狐冲(175,2,10)
曾阿牛(175,2,10)
 根据三个特征测算出来来,张小明离各位的“距离”如下:

姓名 体重类型 距离张小明距离
东方不败(165,4,10) 103
独孤求败(175,3,12) 101
西门吹雪(154,4,10) 104
令狐冲(175,2,10) 102
曾阿牛(175,2,10) 104

当k=3(取三个最近的邻居):则离张小明最近的邻居中:占比最多为瘦人,瘦人占比:2/3=67%  则张小明体重为瘦。

当k=5(取五个最近的邻居):则离张小明最近的邻居中:占比最多为胖人,胖人占比:3/5=60%  则张小明体重为胖。

               疑问理解:预测对应和对应的邻居如何计算?  

                   使用预测对象的每个特征和已知对象的每个特征  之间的差异值进行测算。计算方法,一般使用欧式距离或曼哈顿距离:

                 

             

其算法的描述为:
1)计算测试数据与各个训练数据之间的距离;
2)按照距离的递增关系进行排序;
3)选取距离最小的K个点;
4)确定前K个点所在类别的出现频率;
5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。


猜你喜欢

转载自blog.csdn.net/c11611/article/details/79099674