K-means 与 KNN 是两个很简单的算法,但是由于平时用的少,所以记得不是很清楚,稍不注意,就会弄混,现在特别对这两个算法进行比较学习。
1、K-means
K-means 是一种聚类算法,将已知的样本按照K个类来聚类。
K-Means的算法如下:
1、随机在图中取K(想要聚成几个类,K就等于几)个种子点。
2、然后对图中的所有点求到这K个种子点的距离,假如点Pi离种子点Si最近,那么Pi属于Si点群。
3、接下来,根据第2步聚出的K个类,重新计算这K个类的中心点,我们要移动种子点到属于他的“点群”的中心。
4、然后重复第2)和第3)步,直到,种子点没有移动
2、KNN
KNN,即K最近邻算法,是一种分类算法,K表示当前样本与最邻近的K个已知类别样本之间的关系。最邻近的K个样本中最多属于哪一类,那当前样本就属于哪一类。
KNN算法步骤如下:
step.1---初始化距离为最大值
step.2---计算未知样本和每个训练样本的距离dist
step.3---得到目前K个最临近样本中的最大距离maxdist
step.4---如果dist小于maxdist,则将该训练样本作为K-最近邻样本
step.5---重复步骤2、3、4,直到未知样本和所有训练样本的距离都算完
step.6---统计K-最近邻样本中每个类标号出现的次数
step.7---选择出现频率最大的类标号作为未知样本的类标号