一、什麼是elbow method
Elbow Method 是聚類分析中常用的一種方法,用於確定數據分成的簇數。 基本原則是簇內的平均距離應儘可能小,而簇間的平均距離應儘可能大。
二、如何實現 elbow method
要實現 elbow method,我們需要分以下幾步進行:
1、導入所需的庫
import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import KMeans
2、讀取數據
data = np.loadtxt('data.txt')
3、初始化 k 和 WCSS
k 代表簇的數量,WCSS 代表簇內平均距離
wcss = [] k_range = range(1,10)
4、遍歷每個 k,計算 sum of squared errors (SSE)
for k in k_range:
km = KMeans(n_clusters=k)
km.fit(data)
wcss.append(km.inertia_)
5、繪製 elbow curve,選擇最優 k
plt.plot(k_range, wcss)
plt.xlabel('Number of clusters')
plt.ylabel('WCSS')
plt.title('Elbow Method')
plt.show()
運行以上代碼,我們可以得到一個 elbow curve.
三、如何解讀 elbow curve
Elbow curve 一般呈現出一個彎曲的拐點,這個拐點就是數據最優的聚類數目。我們需要觀察 elbow curve 來選擇最優的 k 值。隨著 k 的增大,WCSS 值會逐漸減小,這是很正常的,因為聚類層次增加了,簇內的相似度一般會隨之增強。 但是,當 k 增加過多時, 增加的效果會逐漸變弱,這是因為原本需要聚類的數據已經被分的很細了,再增加 k 相當於把本來屬於同一個簇的點分散到了不同的簇中,簇內相似度不會變好,反而會變差。
因此,通過觀察 elbow curve,我們可以選擇距離拐點最近的 k 值作為數據的最優聚類數目。當然,也可以根據實際情況權衡選擇一個較小或較大的聚類數目。
四、elbow method存在的問題
Elbow Method 是一種簡單有效的選擇最優 k 的方法,但是它也存在一些問題:
1、elbow curve 可能沒有清晰的拐點,不夠直觀
2、elbow curve 的結果可能與初始隨機值有關,需要多次試驗取平均
3、elbow method 可能不適用於某些數據集,如雜訊數據、密集數據等
因此,我們在使用 elbow method 的時候需要謹慎評估結果,盡量採用多種方法進行驗證。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/236190.html
微信掃一掃
支付寶掃一掃