【问题标题】:How to efficiently split the time series dataset?如何高效地拆分时间序列数据集?
【发布时间】:2020-03-11 05:40:53
【问题描述】:

所以我是 Python 的初学者,最近一直在从事一个项目,该项目为患者提供时间序列 ECG 值。对于每位患者,ECG 数组中大约有 3000000 个值,其中大小为 6000 的批次代表一分钟的记录。我还有另一个名为“注释”的数组,它标记了患者在那一分钟是否发生了呼吸暂停事件。因此,我必须基本上将 3000000 大小的列表拆分为一个列表列表,其中每个列表的大小为 6000,并且我必须将其作为输入传递给 y_train 作为该特定分钟的注释的一维卷积神经网络。我必须为 35 名患者做这个手术。我尝试编写一个代码,使用以下代码将大列表拆分为列表列表。

chunks = [data[x:x+6000] for x in range(0, len(data), 6000)]

但是,这仅对单个患者来说需要很多时间。有没有更好的方法可以处理我的数据集?也就是说,如何将我的 35 个列表(每个患者 1 个)转换为每分钟的列表列表,这将充当我的 X_train 并为所有 35 个患者生成一个注释列表,作为我的 Y_train。 谢谢

【问题讨论】:

    标签: python python-3.x time-series conv-neural-network


    【解决方案1】:

    对于这种大小的数据,我强烈建议您使用numpy。我猜你的神经网络库可能使用numpy,所以这会很好地交互,但由于你没有说你使用的是什么库,我不能确定。

    如果您的数据位于 numpy 数组中,那么您可以每分钟将该数组的切片传递给网络,而无需预先计算它们,例如

    for start in range(0, len(data), 6000):
        out = conv_neural_net(data[start:start + 6000])
        # Do whatever with the output here
    

    numpy 用于对大型数字数据集执行数字运算,比使用原始 Python 更快,因此对于您的情况绝对值得。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-23
      • 1970-01-01
      • 2020-03-17
      • 2018-10-07
      • 2021-10-16
      • 2015-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多