Tag: 数据分区

将float数组划分为类似的段(聚类)

我有一个像这样的浮点数组: [1.91, 2.87, 3.61, 10.91, 11.91, 12.82, 100.73, 100.71, 101.89, 200] 现在,我想像这样分区数组: [[1.91, 2.87, 3.61] , [10.91, 11.91, 12.82] , [100.73, 100.71, 101.89] , [200]] // [200]将被视为exception值,因为群集支持较少 我必须为几个数组找到这种段,我不知道分区大小应该是多少。 我试图通过使用层次聚类(Agglomerative)来做到这一点,它给我带来满意的结果。 然而,问题是,我被建议不要将聚类算法用于一维问题,因为它们没有理论上的理由(因为它们用于多维数据)。 我花了很多时间来寻找解决方案。 但是,建议看起来很不一样: 这个和这个 VS. 这和这个和这个 。 我发现了另一个建议,而不是聚类,即自然中断优化 。 但是,这也需要声明分区号,如K-means(右?)。 这很混乱(特别是因为我必须在几个arrays上执行这种分段,并且不可能知道最佳分区号)。 有什么方法可以找到分区(因此我们可以减少分区内的差异并最大化分区之间的差异),并提供一些理论上的理由吗? 任何指向文章/论文的指针(如果有可用的C / C ++ / Java实现)都有一些理论上的理由对我很有用。