Python 相同数据和簇数的不同轮廓分数

Python 相同数据和簇数的不同轮廓分数,python,cluster-analysis,k-means,unsupervised-learning,silhouette,Python,Cluster Analysis,K Means,Unsupervised Learning,Silhouette,我想使用剪影分数为我的数据集选择一个最佳数量的聚类。我的数据集是关于2000多个品牌的信息,包括购买该品牌的客户数量、该品牌的销售额以及该品牌在每个类别下销售的商品数量 因为我的数据集非常稀疏,所以在聚类之前我使用了MaxAbsScaler和TruncatedSVD 我使用的聚类方法是k-means,因为我最熟悉这个方法(我非常感谢您对其他聚类方法的建议) 当我将簇数设置为80并运行k-means时,每次我都得到不同的轮廓分数。是因为k-means每次给出不同的簇吗? 有时80个簇的轮廓分数小于

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

因为我的数据集非常稀疏,所以在聚类之前我使用了MaxAbsScaler和TruncatedSVD

我使用的聚类方法是k-means,因为我最熟悉这个方法(我非常感谢您对其他聚类方法的建议)

当我将簇数设置为80并运行k-means时,每次我都得到不同的轮廓分数。是因为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

我将非常感谢你的建议!提前谢谢

是的,k-means是随机的,所以它并不总是给出相同的结果

通常这意味着这个k不好

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


看看这些数据,用你的理解来选择一个好的集群。不要期望任何好的结果会自动出来。

是的,k-means是随机的,所以它并不总是给出相同的结果

通常这意味着这个k不好

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


看看这些数据,用你的理解来选择一个好的集群。不要期望任何好的结果会自动出来。

我认为您使用的是sklearn,因此将
random_state
参数设置为一个数字应该可以让您对同一k的不同k均值执行有可再现的结果。您可以将该数字设置为0、42或任何您想要的值,只要为不同的代码运行保持相同的数字,结果就会相同。

我认为您使用的是sklearn,因此将
random_state
参数设置为一个数字,就可以为相同的k的不同k-means执行获得可重复的结果。您可以将该数字设置为0、42或任何您想要的值,只要在不同的代码运行中保持相同的数字,结果就会相同