Python分组D

2024-09-24 22:31:22 发布

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

我有一组数据:

(1438672131.185164, 377961152)                                                                                                       
(1438672132.264816, 377961421)                                                                                                       
(1438672133.333846, 377961690)                                                                                                       
(1438672134.388937, 377961954)                                                                                                      
(1438672135.449144, 377962220)
(1438672136.540044, 377962483)
(1438672137.172971, 377962763)
(1438672138.24253, 377962915)
(1438672138.652991, 377963185)
(1438672139.069998, 377963285)
(1438672139.44115, 377963388)

我需要弄清楚的是如何将它们分组。到目前为止,我使用了一种超级duper简单的方法,只需对元组的第二部分的两部分进行差分,如果差分大于某个预定义的阈值,我会将它们分为不同的组。但结果却不尽如人意。你知道吗

但理论上我认为,通过在一行或多行上拟合,可以确定元组第二部分的值是否属于同一个组,因为我知道元组的第一部分是严格单音的,因为它是一个时间戳(time.time()),而且我知道所有得到结果的数据集都接近线性。假设元组是(y, x)。只有三种选择:

  • 要么所有数据都符合相同的方程y = mx + c
  • 或者只有不同的偏移量c或者
  • 存在偏移量c和不同的m

上述一组仅为一组。以下小组将分为三组:

(1438672131.185164, 377961152)                                                                                                       
(1438672132.264816, 961421)                                                                                                       
(1438672133.333846, 477961690)                                                                                                       
(1438672134.388937, 377961954)                                                                                                      
(1438672135.449144, 962220)
(1438672136.540044, 377962483)
(1438672137.172971, 377962763)
(1438672138.24253, 377962915)
(1438672138.652991, 377963185)
(1438672139.069998, 477963285)
(1438672139.44115, 963388)

第1组:

(1438672131.185164, 377961152)                                                                                                       
(1438672134.388937, 377961954)                                                                                                      
(1438672136.540044, 377962483)
(1438672137.172971, 377962763)
(1438672138.24253, 377962915)
(1438672138.652991, 377963185)

第2组:

(1438672132.264816, 961421)                                                                                                       
(1438672135.449144, 962220)
(1438672139.44115, 963388)

第3组:

(1438672133.333846, 477961690)                                                                                                       
(1438672139.069998, 477963285)

有没有一个模块或其他简单的解决方案可以解决这个问题?我在numpy和scipy中发现了最小二乘法,但我不太确定如何正确使用或应用它们。如果除了线性函数还有别的方法,我也很高兴听到关于它们的消息!你知道吗

编辑2 不幸的是,这是一个二维问题,而不是一维问题。例如

(1439005464, 477961152)

应(如果假设该数据的关系约为1:300)仍然是第一组。你知道吗


Tags: 数据方法time时间线性阈值差分理论