1

我想使用輪廓分數爲我的數據集選擇最佳數量的簇。我的數據集是關於2,000多個品牌的信息,包括購買此品牌的客戶數量,品牌的銷售量以及品牌在各類別下銷售的商品數量。相同數據和簇數的不同輪廓分數

由於我的數據集非常稀疏,因此我在集羣之前使用了MaxAbsScaler和TruncatedSVD。

我使用的聚類方法是k-means,因爲我最熟悉這個(我會感謝你對其他聚類方法的建議)。

當我將羣集數量設置爲80並運行k均值時,每次都得到不同的輪廓分數。是否因爲k-means每次都會給出不同的聚類? 有時候,羣集數量爲80的輪廓分數小於200,有時則相反。所以我很困惑如何選擇合理數量的羣集。

此外,我的輪廓分數範圍很小,並且不會因爲增加集羣數量而變化很多,範圍從0.15到0.2。

下面是我從運行剪影成績得到了結果:

For n_clusters=80, The Silhouette Coefficient is 0.17329035592930178 
For n_clusters=100, The Silhouette Coefficient is 0.16970208098407866 
For n_clusters=200, The Silhouette Coefficient is 0.1961679920561574 
For n_clusters=300, The Silhouette Coefficient is 0.19367019831221857 
For n_clusters=400, The Silhouette Coefficient is 0.19818865972762675 
For n_clusters=500, The Silhouette Coefficient is 0.19551544844885604 
For n_clusters=600, The Silhouette Coefficient is 0.19611760638136203 

我將非常感激您的建議!提前致謝!

回答

1

是的,k-means是隨機的,所以它並不總是給出相同的結果。

通常這意味着這個k不好。

不要盲目依靠剪影。找到「最佳」k值不夠可靠。很大程度上,因爲根本就沒有最好的k

看看數據,並用你的理解來選擇一個好的聚類。不要期望自動出現任何好東西。

0

我認爲你正在使用sklearn,所以將random_state參數設置爲一個數字應該讓你有相同k值的k-means的不同執行結果的重複性結果。您可以將該數字設置爲0,42或任何您想要的只是保持相同的數字爲您的代碼的不同運行,結果將是相同的。

相關問題