K-means聚類 的 Python 實現
K-means聚類是一個聚類算法用來將 n 個點分成 k 個集群。
算法有3步:
1.初始化– K 個初始質心會被隨機生成
2.分配 – K 集群通過關聯到最近的初始質心生成
3.更新 –重新計算k個集群對應的質心
分配和更新會一直重復執行直到質心不再發生變化。
最后的結果是點和質心之間的均方差達到最小。
以 k=3 為例演示這個過程:
初始化


分配:



更新:


重新分配:


可以看到一個紅色的點,變成了綠色的;一個藍色的點變成了紅色的。
我們更加接近最終目標了。
現在重復這個過程,直到每一個集群都沒有變化為止。
繼續這個過程:


現在得到3個清晰地集群和3個質點在這三個集群的中間。
結論:
1.k-means 可以嘗試不同的初始化質點來獲取更好的 label.
2.如果數據集有一定的對稱性,一些數據可能會被錯誤的標記。
3.k-means 依賴歐氏距離,所以對尺度非常敏感,所以如果存在縮放問題,要對數據進行歸一化處理。