有效地将相似的数字分组在一起

Vla*_*ala 0 language-agnostic algorithm math statistics cluster-analysis

可能的重复:
一维数字数组聚类

我有一个数字数组,例如[1, 20, 300, 45, 5, 60, 10, 270, 3]. 根据邻近度将这些数字分组在一起的有效算法是什么?在这种情况下,我期望类似[1, 3, 5],[20, 45, 60]和 的东西[270, 300]

Jef*_*ald 5

您所问的最难的部分是如何实际定义邻近度。您期望输出是什么[5,10,15,20]?与 的分组相同吗[500,1000,1500,2000]

关于什么[1,2,3,5,7,8,9]?应该是一组还是三组?(或两个?)。
关于什么[1,2,3,5,7,8,9,1075,4000]?1075 和 4000 会组合在一起吗?样本中较大数字是否会改变较小数字的分组?

这个问题是整个机器学习领域提出的问题:聚类分析 也许这个相关的问题会有帮助?

我认为您想要的是K 均值聚类(在相关问题中有助于链接),但您需要知道要将数据分成多少组才能使用它。

  • 对于**一维数据**,存在更有效的方法。您不应该使用 k 均值等多元方法。相反,对数据集进行排序(以“O(n log n)”的形式),然后寻找最佳分区策略,例如自然中断、最大间隙、最小核密度估计等。 **排序是关键**。 (2认同)