【问题标题】:Reshape 2D dataframe to include previous data points (for LSTM in Keras)重塑 2D 数据框以包含以前的数据点(用于 Keras 中的 LSTM)
【发布时间】:2018-10-25 17:53:36
【问题描述】:

我有一个包含 100000 个样本和 10 个特征的数据框。我想将其转换为 3D 数组,其中 [X][0] 是当前数据点,[X][1] 是前一个数据点 (X-1) 等。所以如果我想要一个“回溯”五个单位,数据的形状看起来像 (100000, 5, 10)。原因是我希望我的 LSTM 在训练模型时考虑以前的数据点。

有没有简单的方法可以做到这一点?

【问题讨论】:

    标签: python pandas numpy keras


    【解决方案1】:

    如果您的数据框的形状为 (100000, 10),则无法将其重塑为 (100000, 5, 10),因为您没有 100000x5x10 值。所以,第一步是创建滞后特征:

    > df = pd.DataFrame({'a':[i for i in range(5)], 'b':[i for i in range(5, 10)]})
    > df
    >       a   b
        0   0   5
        1   1   6
        2   2   7
        3   3   8
        4   4   9
    > columns = [df.shift(i) for i in range()]
    > df = pd.concat(columns, axis=1)
    > df
    >       a   b   a   b   a   b
        0   0   5   NaN NaN NaN NaN
        1   1   6   0.0 5.0 NaN NaN
        2   2   7   1.0 6.0 0.0 5.0
        3   3   8   2.0 7.0 1.0 6.0
        4   4   9   3.0 8.0 2.0 7.0
    

    在此之后,您可以重新调整数据框以满足您的需求:

    > # 5 samples, 3 timesteps, 2 features
    > df.values.reshape(5,3,2)
    > array([[[ 0.,  5.],
        [nan, nan],
        [nan, nan]],
    
       [[ 1.,  6.],
        [ 0.,  5.],
        [nan, nan]],
      ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-05
      • 2017-03-06
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      相关资源
      最近更新 更多