sklearn Clustering:确定大型数据集最佳集群数量的最快方法

sklearn Clustering: Fastest way to determine optimal number of cluster on large data sets

我在 python 中使用 sklearn 中的 KMeans and the silhouette_score 来计算我的集群,但是在 >10.000 个样本和 >1000 个集群上计算 silhouette_score 非常慢。

  1. 是否有更快的方法来确定最佳簇数?
  2. 或者我应该更改聚类算法?如果是,对于具有 >300.000 个样本和大量集群的数据集,哪种算法是最好的(也是最快的)算法?

最常用的查找簇数的方法是弯头曲线法。但是它需要你多次 运行 KMeans 算法来绘制图形。 https://en.wikipedia.org/wiki/Determining_the_number_of_clusters_in_a_data_set 维基页面提到了一些确定簇数的常用方法。

剪影得分,虽然是更具吸引力的衡量标准之一,但 iw O(n^2)。这意味着,计算分数比计算 k 均值聚类要昂贵得多!

此外,这些分数只是启发式的。他们不会以任何方式产生 "optimal" 聚类。他们只给出了如何选择k的提示,但很多时候你会发现其他k要好得多!所以不要盲目相信这些分数

MiniBatchKmeans 是您可以尝试的流行选项之一 https://scikit-learn.org/stable/modules/generated/sklearn.cluster.MiniBatchKMeans.html