1. 程式人生 > 其它 >k-means演算法

k-means演算法

k:初始中心點個數,計劃聚類樹 ---->想聚集的個數,中心點也可叫做質點,可以任意選擇點數
means:求中心點到其他資料點距離的平均值 ---->採用歐氏距離

方法:
1.確定K,選擇k個質心,求每個點到各個質心的距離,判斷離哪個最近就歸到哪一個


如倆圖所示,呈現第一次做完之後的結果,與我們想象的聚類不太一樣,效果不太好,是否可以考慮換個質心?

2.將一簇(如紅色佇列)中的所有點都算一遍,求平均值,將質心可確定為其平均點位置。其他類也按相同處理。

3.更新質心後,重新判斷離哪一個質心進,迭代聚類


4.重複第四步滿足收斂要求,直到樣本中心點不改變.


總結演算法:
K-Means演算法的步驟為:

步驟一:選擇任意K個數據,作為各個聚類的質心。
步驟二:對每個樣本進行分類,將樣本劃分到最近的質心所在的類別,執行步驟三。
步驟三:取各個聚類的中心點作為新的質心,執行步驟二進行迭代。

迭代的結束條件:
當新的迭代後的聚類結果沒有發生變化。
當迭代次數達到預設的值。

疑問:如果範圍比較大,而剛開始有兩個中心點選的比較近,可能以後的結果會出現一箇中心點逐漸往外移動,有沒有一種演算法能夠第一次就提前將中心點選的比較靠近最終距離?也就是不採取隨機選定初始中心點?
其次,感覺效率比較慢,每次都要計算和迭代。