【问题标题】:Convert a time series data to proper time steps将时间序列数据转换为适当的时间步长
【发布时间】:2023-03-20 14:22:01
【问题描述】:

我有一个包含 20331 行和 6 列的数据集。它基于每小时采样的时间序列数据。 我想将其转换为类似于 [samples, timesteps, features] 的格式。

我尝试了以下代码:

train.reshape((20331, 30, 6))

生成的样本应该有 30 个时间步长和每个样本中的 6 个特征。

但我得到了一个错误:

ValueError: 无法将大小为 121986 的数组重新整形为形状 (20331,30,6)

在进行整形之前我需要做任何预处理吗?

【问题讨论】:

    标签: python arrays numpy time


    【解决方案1】:

    您无法使用numpy.reshape 创建数据。它仅用于重塑基础数据。

    因此,在您的情况下,您从 20'331 * 6 = 121'986 个数据点开始,并且希望将它们排列成 (20'331 * 30 * 6) = 3'659'580 个数据点,即 30比你开始时多几倍。

    您的二维数据应该是什么?考虑一下。 Numpy 无法凭空创建数据。


    编辑:

    如果你想拥有 30 个数据点的切片,你可以这样做:

    bs = 30 # your chosen batch-size
    tail = len(train) % bs # the leftover for the last batch
    train_crop = train[:-tail].reshape((-1, bs, 6))
    

    最后一行将丢弃最后的项目,因此您的长度可以被批量大小整除。你重塑的形状在最后一个特征维度是6,在第二维度是bs,在第一维度是-1,这让pytorch自己计算出大小。

    【讨论】:

    • 感谢您的帮助。如何将我拥有的数据重塑为合适的大小,形状 -> [samples, timesteps, features]?我总共有 6 个特征,我希望有 30 个时间步长。
    • 您有 20'331 个连续数据点。如果你想要 30 个切片,你会得到 677 个切片和 21 个剩余数据点。
    • 感谢 Dorian,现在对我来说很有意义。
    猜你喜欢
    • 1970-01-01
    • 2018-10-21
    • 2016-04-08
    • 2019-06-16
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多