【问题标题】:How to cluster with K-means, when number of clusters and their sizes are known [closed]当簇的数量及其大小已知时,如何使用 K-means 进行聚类[关闭]
【发布时间】:2014-07-19 23:33:45
【问题描述】:

我正在使用 scikit 对一些数据进行聚类。

我有最简单的任务:我知道集群的数量。而且,我确实知道每个集群的大小。是否可以指定此信息并将其传递给 K-means 函数?

【问题讨论】:

  • 您能评论一下这个问题的根源吗?

标签: python cluster-analysis scikit-learn k-means


【解决方案1】:

没有。您需要某种类型的约束聚类算法来执行此操作,并且没有在 scikit-learn 中实现。 (这不是“最简单的任务”,除了一些启发式地将样本从一个集群移动到另一个集群之外,我什至不知道有什么原则算法可以做到这一点。)

【讨论】:

    【解决方案2】:

    我只能想到蛮力算法。如果集群分离得很好,那么您可以尝试使用不同的随机初始化运行集群多次,只提供集群数量作为输入。在每个集群的每次迭代计数大小之后,对其进行排序并与已知集群大小的排序列表进行比较。如果它们不匹配冲洗并重复。

    【讨论】:

      【解决方案3】:

      不再是 k-means。

      K-means 是方差最小化,您的目标似乎是生成预定义大小的分区,而不是最小方差。

      但是,here is a tutorial 展示了如何修改 k-means 以生成相同大小的集群。您可以轻松扩展它以生成所需大小的集群,而不是平均大小。以这种方式修改 k-means 相当容易。但在大多数数据集上,结果将比 k-means 结果更无意义。 K-means 通常与随机凸分区一样好。

      【讨论】:

      • K-means 通常和随机凸分区一样好。 相当固执:)
      猜你喜欢
      • 2016-04-14
      • 2016-12-03
      • 2016-07-28
      • 2018-08-10
      • 2015-01-16
      • 2010-12-20
      相关资源
      最近更新 更多