A little progress

K-Means 进化

2018-09-12  本文已影响0人  翻开日记

K-Means 原型

训练样本X = {x1, x2, x3, ......, xn}, x1 = {a1, a2, a3 ..... am}, a为样本的特征

  1. 从数据集中随机选取K个点, 分别构成每个聚类中心点C={C1, C2, ..., CK}
  2. for x in X: 计算x分别距离K个点的距离,找到最小的距离Cj,将x归到Cj中.
  3. for c in C: 对每个类, 重新计算各自的聚类中心
  4. 重复2,3步骤, 直至聚类中心不再变化.

K-Means ++

实质
对K-Means算法第一步k值选取的方法进行改变

  1. 随机在样本中选取1个点作为聚类中心
  2. for x in X: 找到距离x最近的类,并记录其距离,记为dx.
    最终得到Dx={dx1, dx2,.....,dxn},并取最大的dx对应的点作为新找到的聚类中心
  3. 重复步骤2,直至找到k个点
  4. 使用K-Means算法的2-4步骤

ISODATA算法

实质
针对K值新增两种操作: 分裂合并

分裂的条件
1.每个类所要求的最少样本数Nmin: 如果该簇分裂后样本数少于Nmin,则不允许分裂.
2.最大方差Sigma: 衡量类内分散程度, 大于该值, 则可以进行分裂

合并的条件
类间最小距离dmin: 两个类如果距离小于dmin,则合并.

结果
给定预期聚类中心数k0
最终输出聚类中心数[k0/2, 2k0]

上一篇下一篇

猜你喜欢

热点阅读