动态分组给定的一组数字

时间:2016-05-20 07:18:03

标签: python math statistics numeric

给定一组数字是否有可用的算法或方法将它们分成不同的组并计算它们?

类似的东西:

class AssertRaises(object):
    def __init__(self, exc_type):
        self.exc_type = exc_type

    def __enter__(self):
        pass

    def __exit__(self, exc_type, exc_val, exc_tb):
        if exc_type == self.exc_type:
            raise AssertionError
        return True

说组的数量应该是最小2到最大10。 如何做到这一点?

3 个答案:

答案 0 :(得分:0)

您需要某种群集。数量有限的2..10组(群集)k-means看起来不错。

你肯定需要一些取决于数字值的指标(因为简单的差异不适合将1,2,3和100,200分成不同的集群)。可能是,值对数?

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您要求的任务有点含糊不清,因为分组标准没有明确定义。

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

  1. 找到一个数字范围
  2. 定义覆盖跨度的10个非重叠区间的边界,使得最小和最大元素落入不同的区域
  3. 将组号放入箱中
  4. 丢弃空箱(由于最小和最大数量在不同的箱子中,至少会保留2个箱柜)
  5. 调查剩余垃圾箱的内容并打印报告
  6. 当然,你以这种方式获得的群体或多或少是任意的。如果你想避免这样分组:

    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. 寻找合适的聚类算法