K-Means 原型
訓(xùn)練樣本X = {x1, x2, x3, ......, xn}, x1 = {a1, a2, a3 ..... am}, a為樣本的特征
- 從數(shù)據(jù)集中隨機選取K個點, 分別構(gòu)成每個聚類中心點C={C1, C2, ..., CK}
-
for x in X
: 計算x分別距離K個點的距離,找到最小的距離Cj,將x歸到Cj中. -
for c in C
: 對每個類, 重新計算各自的聚類中心 - 重復(fù)2,3步驟, 直至聚類中心不再變化.
K-Means ++
實質(zhì)
對K-Means算法第一步k值選取的方法進行改變
- 隨機在樣本中選取1個點作為聚類中心
-
for x in X
: 找到距離x最近的類,并記錄其距離,記為dx.
最終得到Dx={dx1, dx2,.....,dxn},并取最大的dx對應(yīng)的點作為新找到的聚類中心 - 重復(fù)步驟2,直至找到k個點
- 使用K-Means算法的2-4步驟
ISODATA算法
實質(zhì)
針對K值新增兩種操作: 分裂 和合并
分裂的條件
1.每個類所要求的最少樣本數(shù)Nmin: 如果該簇分裂后樣本數(shù)少于Nmin,則不允許分裂.
2.最大方差Sigma: 衡量類內(nèi)分散程度, 大于該值, 則可以進行分裂
合并的條件
類間最小距離dmin: 兩個類如果距離小于dmin,則合并.
結(jié)果
給定預(yù)期聚類中心數(shù)k0
最終輸出聚類中心數(shù)[k0/2, 2k0]