K-Means++算法及实现
K-Means++ Algorithm
Key points
同K-Means相比,初始化中心点方式发生变化。由于K-Means初始K cluster centers随机产生,这样算法收敛情况受初始随机化影响较大,K-Means针对初始化问题做了改进。
- step 1:从输入样本点集合中随机选取一个点作为第一个cluster center
- step 2:计算每一个样本点到最近cluster center的距离D(x)
- step 3:选取新的样本点作为新的cluster center,选取规则为:D(x)值越大,则被选中的概率越大
- step 4:重复上述两步直至K个cluster center被选出
- step 5:选出的K个cluster center作为初始执行K-Means算法(可参考上篇对K-Means算法的介绍(https://blog.csdn.net/weixin_38250282/article/details/83589259))
上述算法中step 3 中选择将D(x)反映到概率上,本文选择正比关系,即P = k * D(x)
K-Means Cluster Center Initialization
初始化概率生成K个cluster center过程:def randProb(dataSet, k, m, disMeas=disEclud): n = np.shape(dataSet)[1] centCoids = np.mat(np.zeros((k, n))) dis &#