python - 聚类问题

标签 python algorithm cluster-analysis classification nearest-neighbor

我的任务是为特定数据集找到包含最多点的 N 个簇,前提是这些簇受特定大小的限制。目前,我正试图通过将我的数据插入 kd 树、遍历数据并找到它最近的邻居,然后在它们创建的集群不超过限制的情况下合并这些点来做到这一点。我不确定这种方法是否会给我一个全局解决方案,所以我正在寻找调整它的方法。如果你能告诉我这会遇到什么类型的问题,那就太好了。

最佳答案

查看 scipy.clustering作为一个开始。然后关键字搜索可以提供有关那里使用的不同算法的大量信息。聚类是一个很大的领域,有大量的研究和实际应用,还有一些已经被发现非常有效的简单方法,所以你可能不想自己动手。

这就是说,聚类算法通常相当容易编程,如果您确实想自己编程,k-means 和凝聚聚类是一些可以快速完成的最爱。

最后,我不确定您关于由特定大小限制的恰好 N 个簇的想法是自洽的,但这取决于您所说的“大小”和“簇”(是单点集群?)。

更新:

根据下面 OP 的评论,我认为标准聚类方法不会为这个问题提供最佳解决方案,因为没有可以优化的点之间“距离”的连续度量。尽管在某些情况下它们可能会给出很好的解决方案或近似值。对于聚类方法,我会尝试 k-means,因为该方法的前提是具有固定的 N。

但这看起来更像是一个 covering problem 而不是聚类(,你有 N 个固定大小的矩形,你试图用它们覆盖所有的点),但我对这些不太了解,所以我会把它留给某人否则。

关于python - 聚类问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3891645/

相关文章:

python - 如何显示列表?

performance - Google Maps API v3,大量标记、聚类和性能

python - 如何让python3导入Homebrew安装的graph-tool?

python - 使用浏览器的 "back button?"时如何刷新查询集

python - 在Python中快速比较数据流图

python - 文本分割 : Algorithm to match input with the longest words from the dictionary

算法树或植物生长背后的算法

algorithm - 3D平面算法中点到线的最小垂直距离

python - AffinityPropagation .labels_ 与 .predict()

machine-learning - 'Pipeline' 对象在 scikit-learn 中没有属性 'get_feature_names'