【算法流程】
(1) 设有N个观测样本,要求聚为K类,从N个观测样本中随机选择K个点做为K个簇的初始化中心点。
(2) N个观测样本中,每个样本分别与簇中心点计算距离,将距离最小的值,归类到对应类的簇中心集合里。
(3) 现在每一个簇中有若干个观测样本,计算K个簇中所有样本点的均值,作为第二次迭代K个簇的中心点。
(4) 重复步骤2和3,迭代直到停止(停止条件:簇中心点不再改变或者达到指定的迭代次数)。
【K-means缺点】
(1) 簇个数(K值)的选择很麻烦,因为是无标签数据,并不知道聚成多少个类别才合适。
解决方案:肘方法 或 轮廓系数法。
(2) 不同的初始化聚类中心会导致完全不同的结果,会出现算法收敛变慢和聚类出错的情况。
解决方案:K-means++ 或 Kmeans || (可在大规模数据集上使用)。
【K-means++ 初始化簇中心步骤】
(1) 从所有样本中随机选取一个样本作为第一个簇中心。
(2) 计算所有样