繁体   English   中英

对于相同的数据和簇数,不同的轮廓分数

[英]Different silhouette scores for the same data and number of clusters

我想使用剪影得分为我的数据集选择最佳聚类数。 我的数据集是有关2,000多个品牌的信息,包括购买该品牌的客户数量,该品牌的销售额以及该品牌在每个类别下销售的商品数量。

由于我的数据集非常稀疏,因此在进行聚类之前,我已经使用了MaxAbsScaler和TruncatedSVD。

我使用的聚类方法是k均值,因为我对此最熟悉(我很感谢您对其他聚类方法的建议)。

当我将群集号设置为80并运行k-means时,每次获得的轮廓分数都不同。 是因为k均值每次给出不同的聚类吗? 有时,群集数为80的轮廓得分小于200,有时相反。 因此,我对如何选择合理数量的群集感到困惑。

此外,我的轮廓分数范围很小,并且随着我增加聚类数(从0.15到0.2)而变化不大。

这是我通过运行Silhouette得分得到的结果:

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

非常感谢您的建议! 提前致谢!

是的,k均值是随机的,因此它并不总是给出相同的结果。

通常,这意味着k不好。

但是不要盲目地依赖剪影 找到“最佳” k还不够可靠。 在很大程度上,因为通常根本没有最佳k

查看数据,并根据您的理解选择一个好的聚类。 不要指望有什么好东西会自动出现。

我认为您正在使用sklearn,因此将random_state参数设置为一个数字应该可以让您在相同k的k均值的不同执行情况下获得可重现的结果。 您可以将该数字设置为0、42或任何其他值,只是为了在不同的代码运行中保留相同的数字,结果将是相同的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM