這是 k-means 演算法的 Python 實現,包括肘部方法和輪廓方法,用於選擇最佳 K
K-means 是一種流行的聚類演算法,用於將資料劃分為 K 個簇。它的工作原理是迭代地將每個資料點分配給最近的聚類質心,然後根據分配給它的資料點重新計算每個聚類的質心。重複該過程直到收斂。
k 均值的目標是最小化每個資料點與其指定的簇質心之間的距離平方和。目標函數可以寫為: j
內的i-th
資料點, μj
是簇j
的質心, N
是資料點的總數。
Elbow 方法是一種啟發式方法,用於確定 K 均值聚類中的最佳聚類數。此方法將每個觀測值與其指定質心之間的平方距離總和繪製為聚類數量的函數。圖上的「彎頭」點表示增加額外簇不會導致平方距離總和顯著減少的簇數。
Elbow 方法可以歸納為以下步驟:
Silhouette 方法是另一種啟發式方法,用於確定 K 均值聚類中的最佳聚類數。此方法透過計算其輪廓係數來衡量每個觀測的聚類分配的品質。 Silhouette 係數的範圍從 -1 到 1,其中值 1 表示觀測值聚類良好,值 -1 表示觀測值分類錯誤。數據點i
的輪廓係數計算公式為: a(i)
是i
與其聚類中所有其他資料點之間的平均距離, b(i)
是i
與所有其他聚類(即具有下一個最近質心的聚類)之間的最小平均距離。整個聚類的輪廓係數是所有資料點的輪廓係數的平均值。
Silhouette方法可以概括為以下步驟: