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或任何您想要的只是保持相同的数字为您的代码的不同运行,结果将是相同的。

相关问题