一、概述
K-means算法是集簡單和經典於一身的基於距離的聚類算法採用距離作爲相似性的評價指標,即認爲兩個對象的距離越近,其相似度就越大。該算法認爲類簇是由距離靠近的對象組成的,因此把得到緊湊且獨立的簇作爲最終目標。
二、k-means算法流程
結合代碼具體分析流程:
1. 準備數據,對數據進行可視化顯示
2.定義距離函數,聚類中心更新函數,實現k-means
- 計算聚類中心與樣本之間的距離函數
- 根據距離記錄列表record更新聚類中心
- 聚類算法指定運行n個epoch或者聚類中心不變則停止
- 得到聚類中心結果
- 可視化查看結果
代碼傳送門**(含tensorflow實現版)**
三、缺點
- 計算量大,樣本量大時非常耗用計算資源;
- 不好確定K值,只能多次嘗試,根據肘部法則去確定一個合適的K值;
- 不一定每次都能聚類好。可以記錄一個距離的損失值,選擇最後最小的損失值作爲聚類中心;
- 不能聚類密度類數據,如兩個環狀的數據,這時候使用K-means將會失效。可以選擇使用DBSCAN算法聚類。