1.K_means算法
K_menas算法流程
输入是样本集D={x1,x2,…xN},聚类的簇数k,最大迭代次数T
输出是簇划分C={C1,C2,…Ck}
1)从数据集D中随机选择k个样本作为初始的k个质心向量: {μ1,μ2,…,μk},将每个簇初始化为空集
2)对于t=1,2,…,T
a) 对于i=1,2…N,计算样本 xi 和各个质心向量 μj,j=1,2,…k的欧式距离,将 xi 划分到最近的簇中,即更新Cj=Cj∪{xi}
b) 对于j=1,2,…,k,对Cj中所有的样本点重新计算新的质心
c) 如果所有的k个质心向量都没有发生变化,则转到步骤3)
3) 输出簇划分C={C1,C2,…Ck}
值得一提的是关于聚类中心数目(K值)的选取,的确存在一种可行的方法,叫做Elbow Method:通过绘制K-means代价函数与聚类数目K的关系图,选取直线拐点处的K值作为最佳的聚类中心数目。但在这边不做过多的介绍,因为上述方法中的拐点在实际情况中是很少出现的。比较提倡的做法还是从实际问题出发,人工指定比较合理的K值,通过多次随机初始化聚类中心选取比较满意的结果。