【问题标题】:How to reshape pandas dataframe as input to keras simpleRNN?如何重塑熊猫数据框作为 keras simpleRNN 的输入?
【发布时间】:2021-07-09 11:25:10
【问题描述】:

我有一个这样的时间序列数据数据框

df = pd.DataFrame({'TimeStep': [1, 2, 3, 1, 2, 3],
                   'Feature1': [100, 250, 300, 400, 100, 50],
                   'Feature2' : [2, 5, 100, 10, 42, 17]})

   TimeStep |Feature1   |Feature2
    |1      |100    |2
    |2      |250    |5
    |3      |300    |100
    |1      |400    |10
    |2      |100    |42
    |3      |50     |17

现在我想将这些提供给 keras 中的 simpleRNN 层 例如上面的 Batch Size 为 2,timesteps = 3 和 input_dim = 2

我试过 df.to_numpy().reshape((2, 3, 2)) (当然是真实 df 的实际尺寸) 而且那个形状不起作用。

我很感激你能给我的任何指点。 不久前,我用纯 numpy 数组做了类似的事情,但是我没有指定 input_dim 并且它起作用了。

提前致谢!

【问题讨论】:

标签: pandas keras recurrent-neural-network


【解决方案1】:

你已经接近了!如果您重塑不包括TimeStep 列的数据框(通过iloc[:, 1:]),它应该这样做:

>>> df.iloc[:, 1:].to_numpy().reshape(2, 3, 2)
array([[[100,   2],
        [250,   5],
        [300, 100]],

       [[400,  10],
        [100,  42],
        [ 50,  17]]], dtype=int64)

具有(batch_size, seq_len, num_features) 形状。

【讨论】:

  • 艾丁 非常感谢。你愿意向我解释这背后的逻辑吗?现在不是4维吗?对不起,我只是想了解我在做什么:-)
  • 哦,我知道了,我想!我无法在上面编辑,但我现在看到了!对不起,混乱:-)
  • @Olli 很高兴能帮上忙!您已经提到您知道 batch_size、每个样本的时间步数以及每个样本的特征数量。那么Feature 1Feature 2这两个列的信息就足够我们构造出想要的数据了。你可以这样想:我们有 12 个数字,但这些数字中有一些层次结构。例如,在最高级别,我们知道它们分为 2 组(批量大小)。所以实际上我们有 6 + 6 个样本。然后在较低的层次上,我们知道每 3 个连续样本是时间相关的(时间步长).... [继续]
  • [contd] ...所以我们有 (3 + 3) + (3 + 3)。但是现在剩下的信息也自动显示了:我们必须每步有 2 个特征来满足 6 = 3 *2。总的来说,我们将这 12 个人分成了一个 (2, 3, 2) 形的层次结构。
  • Aydin 非常感谢你这么详细的解释,对我理解有很大帮助!
猜你喜欢
  • 1970-01-01
  • 2017-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
相关资源
最近更新 更多