K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。K-means算法通常以欧式距离作为相似度测度。算法采用误差平方和准则函数作为聚类准则函数。
算法流程:
1)从N个数据点中选取K个作为质心
2)对剩余的每个数据计算其到每个质心的距离,并把它归到最近的质心的类
3)多得到的各个类计算均值,并将其作为新的质心
4)迭代2~3步直至新的质心与原质心相等或小于指定阈值,迭代结束
影响聚类效果的关键性因素:
1.K值大小的选取
k-means聚类是无监督的,k值一般通过人为的方式设定,或者通过向canopy这样的粗聚类方式来协助确定。
2.初始K个聚类中心点的选择
随机选取
根据数据分布均匀选取
选取相互之间距离尽量较远的点(kmeans++)
具体的算法有:
1.kmeans++初始聚类中心点选取方式:(