最邻近规则分类——KNN(K-Nearest Neighbor)

KNN,是机器学习中常用的一种分类算法,主要的应用领域是对未知事物的判别,判断未知事物属于哪一个类别。它的思想是,根据未知事物特征与已知事物特征的距离去计算,看未知事物与哪一个已知类别的事物最接近。

K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别,这个样本的个数就是参数k的值。

KNN不仅可以用于分类,还可以用于回归。通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比(组合函数)。

K-NN可以说是一种最直接的用来分类未知数据的方法。基本通过下面这张图跟文字说明就可以明白K-NN是干什么的。
KNN
简单来说,K-NN可以看成:有那么一堆你已经知道分类的数据,然后当一个新数据进入的时候,就开始跟训练数据里的每个点求距离,然后挑离这个训练数据最近的K个点看看这几个点属于什么类型,然后用少数服从多数的原则,给新数据归类。

算法步骤如下:

  1. 初始化距离为最大值
  2. 计算未知样本和每个训练样本的距离dist
  3. 得到目前K个最临近样本中的最大距离maxdist
  4. 如果dist小于maxdist,则将该训练样本作为K-最近邻样本
  5. 重复步骤2、3、4,直到未知样本和所有训练样本的距离都算完
  6. 统计K-最近邻样本中每个类标号出现的次数
  7. 选择出现频率最大的类标号作为未知样本的类标号

参考文献:
[1]. https://www.cnblogs.com/Leo_wl/p/5602481.html

猜你喜欢

转载自blog.csdn.net/fengchi863/article/details/80114974