kmeans(K均值聚类)是一种常用的聚类算法,因其简单且性能还算良好而受广泛应用。
kmeans聚类的中心思想是:确定k个类,计算模式特征矢量到每个聚类中心的“距离”,将特征矢量归并到距离最小的聚类中心所在的类中。把每一类的平均向量特征的均值作为新的类心。最后,使得样本与类均值的误差平方和最小。
步骤:
1. 初始化。输入矢量特征集的矩阵X,输入指定聚类数目N,随机从X中选取聚类中心C。并设定迭代终止条件即最大迭代次数M和收敛误差容限TH。
2. 进行迭代,按照一定的相似度准则(如最短欧氏距离)将数据分配到最近的类心。迭代结束时,更新类心为每一类的平均向量。
3. 反复执行第二步至满足终止条件。
部分代码:
示例:
1. 初始化中心选取恰当,分类正确
2.初始化中心选取不合适,导致分类不正确:
也就是kmeans聚类,算法的效率及有效性与初始聚类中心的选取有关,如果选取的不恰当,可能会出现错误分类甚至无法分类的情况。因此在使用该算法的时候,要注意选取初始聚类中心:
(1)将模式随机分为k类,计算每类中心。
(2)选择k个密度集中的点作为聚类中心。
(3)选择相距最远的特征点中的k个作为类心。