Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将整数序列分组到尽可能相等的容器中_Python_R_Constraints_Cluster Analysis - Fatal编程技术网

Python 将整数序列分组到尽可能相等的容器中

Python 将整数序列分组到尽可能相等的容器中,python,r,constraints,cluster-analysis,Python,R,Constraints,Cluster Analysis,我在对文本进行分块,试图通过组合文本组(考虑具有字符长度的句子)来创建“尽可能相等”的长度块。我的句子是一个序列(我在r中工作,但同样可以在pandas或python列表中工作,数据最初是json) 所以我在寻找一个函数,它取一组有序的数字,并将它们(按顺序)分组,以最小化组的数量和组大小与目标的偏差 e、 g.以[460,100,200,200,20]和500为目标,然后作为输出生成{1:[460],2:[100,200,20]} 因此,如果目标是500,我们从第一个项目(460)开始,然后知

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

所以我在寻找一个函数,它取一组有序的数字,并将它们(按顺序)分组,以最小化组的数量和组大小与目标的偏差

e、 g.以
[460,100,200,200,20]
500
为目标,然后作为输出生成
{1:[460],2:[100,200,20]}

因此,如果目标是500,我们从第一个项目(460)开始,然后知道不要将第二个项目(100)包括在第一组中,因为40岁以下比60岁以上更好。所以我们开始第二组,从100开始,很容易添加接下来的两个项目(200200)。最后一项会将第二组增加到520,但无论如何都会增加,因为超过20比最后一组短(低于480)要好

我无法确定这是间隔切割(
ggplot2
中的
cut\u width
不起作用)还是一种约束聚集聚类

无论如何,我已经写了一个函数,在迭代时检查是否有超龄/未成年,但是我必须为最后一个值设置一个特例。但它实际上似乎比这更难,因为在结尾可能会有一系列小值需要添加。那么它可能是递归的?这是否足够复杂,需要线性约束规划方法?还是我错过了更简单的东西:)


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

您如何对
[460,100,200,200,20,200,30]
{1:[460],2:[100,200,200],3:[20,200,30]}
进行分组,分组总数为
[460],[500],[250]
,差异为
40,0,250
(或总差异为
290
)嗯,或者是
{1:[460],2:[10020020020],3:[20030]}
对于
40,20270
的差异(总差异
330
)不,这更糟糕。因此,优化意味着检查差异的分布,可能更喜欢最小化线性解算器的标准开发时间,我想:)你如何分组
[460100200200,2020030]
{1:[460],2:[100200200],3:[20200,30]}
,这将给出组的总数
[460],[500],[250]
,差异为
40,0250
(或总差异
290
)Hmmm,或者是
{1:[460],2:[100200200,20],3:[200,30]}
,这将为
40,20270
(总差异
330
)的差异提供
460520230
,不,这更糟。因此,优化意味着检查差异的分布,可能更喜欢最小化线性解算器的标准开发时间,我认为:)