将整数序列分组为尽可能相等的bin

问题描述

我正在对文本进行分块,试图通过组合文本组(想像带有字符长度的句子)来创建“尽可能相等”长度的块。我的句子是一个序列(我正在r中工作,但同样可以在pandaspython列表中工作,数据最初是json)。

因此,我正在寻找一种函数,该函数采用一组有序的数字并将其分组(按顺序),以最大程度地减少组的数量以及组大小与目标的差异。

例如取[460,100,200,20]和目标500,然后作为输出产生{1: [460],2: [100,20]}

因此,给定目标500,我们从第一个项目(460)开始,然后知道不将第二个项目(100)包括在第一组中,因为40之下比60之上更好。因此,我们从第二个组开始,以100开头,轻松地添加下两个项目(200、200)。最后一项会将第二组推高到520,但还是增加了,因为与最后一小段(低于480)相比,最好是超过20。

我无法确定这是区间切割(cut_width中的ggplot2无效)还是约束性聚类的一种类型?

无论如何,我编写了一个可以正常工作的函数,在迭代时检查超量/不足量,但是我必须对特殊情况使用最后一个值。但是实际上似乎比这难得多,因为最后可能要添加一系列小值。所以也许是递归的?这是否足够复杂,需要线性约束编程方法?还是我错过了一些容易的事情:)

有人知道实现此类功能的库等吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)