我一直都把K-means当成KNN,所以这次好好分析一下两个方法。
1.KNN
简单说就是相似的输入得到相似的输出。
所以我们想查看一个输入的类别时,只要找到和它相似的输入,那么它的类也就找到了。
计算步骤如下:
1)算距离:给定测试对象,计算它与训练集中的每个对象的距离(一般来说计算距离就是求向量之间的欧氏距离)
2)找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻
3)做分类:根据这k个近邻归属的主要类别,来对测试对象分类(1个是少数服从多数,1个是分配权重,距离近的权重大)
1)算距离:给定测试对象,计算它与训练集中的每个对象的距离(一般来说计算距离就是求向量之间的欧氏距离)
2)找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻
3)做分类:根据这k个近邻归属的主要类别,来对测试对象分类(1个是少数服从多数,1个是分配权重,距离近的权重大)
参考:http://blog.csdn.net/jmydream/article/details/8644004
2.K-means
k-means属于聚类是无监督学习,
聚类的目的是找到每个样本x潜在的类别y,并将同类别y的样本x放在一起
K-means算法是将样本聚类成k个簇(cluster),具体算法描述如下:
1、 随机选取k个聚类质心点(cluster centroids)为。 2、 重复下面过程直到收敛 { 对于每一个样例i,计算其应该属于的类 对于每一个类j,重新计算该类的质心 } |
参考:https://www.cnblogs.com/jerrylead/archive/2011/04/06/2006910.html