【问题标题】:sklearn Clustering: Fastest way to determine optimal number of cluster on large data setssklearn Clustering:在大型数据集上确定最佳集群数量的最快方法
【发布时间】:2017-05-11 15:20:18
【问题描述】:

我在 python 中使用来自 sklearn 的 KMeanssilhouette_score 来计算我的集群,但是在 >10.000 个样本和 >1000 个集群上计算剪影分数非常慢。

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

【问题讨论】:

    标签: python scikit-learn cluster-analysis data-mining bigdata


    【解决方案1】:

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

    此外,这些分数只是启发式的。它们不会以任何方式产生“最佳”聚类。他们只给出了一个关于如何选择 k 的提示,但你经常会发现其他 k 更好!所以不要盲目相信这些分数

    【讨论】:

      【解决方案2】:

      最常用的求聚类数的方法是肘曲线法。但这需要您多次运行 KMeans 算法来绘制图形。 https://en.wikipedia.org/wiki/Determining_the_number_of_clusters_in_a_data_set wiki 页面提到了一些确定集群数量的常用方法。

      【讨论】:

      • 您也可以使用不需要集群数量作为输入的算法。 DBSCAN 或 HDBSCAN 应该可以很好地适应您的数据集大小。
      • 有没有办法用肘曲线法自动求簇数?
      • 据我了解,一个程序应该能够提供基于肘曲线启发式的聚类数。
      猜你喜欢
      • 1970-01-01
      • 2020-11-04
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      相关资源
      最近更新 更多