动态分组给定的一组数字

2024-04-25 04:35:19 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一组数字,有没有算法或方法可以将它们分成不同的组并进行计数?你知道吗

比如:

input : [1,2,3,4,5,100,200,1000,2500,3000]
output : 1-5         : 5
         100 -200    : 2   
         1000 - 3000 : 3

input : [1,1,2,3,4,5,6,7,8,9,10,11,15,75,80]
output : 1 - 15   : 13
         75 - 80  : 2  

input : [1,100,1000]
output : 1    : 1
         100  : 1
         1000 : 1

比如说组的数量应该是最少2到最多10个。 如何做到这一点?你知道吗


Tags: 方法算法inputoutput数量数字计数
3条回答

这就是机器学习有帮助的问题。 对于这个问题,这里有一个简单而好的解决方案:Clustering values by their proximity in python (machine learning?)。 它使用的是numpy和sklearn,需要先安装。你知道吗

你需要某种集群化。由于2..10个组(簇)的数量有限,k-means看起来是个不错的选择。你知道吗

而且您肯定需要一些依赖于数字值的度量(因为简单的差异不适合将1、2、3和100200划分为不同的集群)。可能是,数值对数?你知道吗

你问的任务有点模棱两可,因为分组的标准没有很好的定义。你知道吗

鉴于集合中至少有两个不同的数字,我建议采用以下方法:

  1. 找出一系列数字
  2. 定义覆盖跨度的10个非重叠料仓的边界,以使最小和最大元素落入不同的料仓
  3. 将数字分组到箱子中
  4. 丢弃空箱子(至少保留2个箱子,因为最小和最大数量在不同的箱子中)
  5. 调查剩余垃圾箱的内容并打印报告

当然,你通过这种方式得到的群体或多或少是武断的。如果要避免这样分组:

input : [1,1,2,3,4,5,6,7,8,9,10,11,15,75,80] output : 1 - 8 : 9 9 - 15 : 4 75 - 80 : 2 那么你应该:

  1. 定义集群的优缺点
  2. 寻找合适的聚类算法

相关问题 更多 >