如何有效地分割时间序列数据集?

时间:2019-11-15 05:18:48

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

所以我是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。 谢谢

1 个答案:

答案 0 :(得分:0)

对于这种大小的数据,强烈建议您考虑使用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快得多,因此绝对值得您这样做。