【问题标题】:Defining target & train values for LSTM model为 LSTM 模型定义目标和训练值
【发布时间】:2021-07-02 15:52:37
【问题描述】:

我有多个数据框(5 到 6 个),如下所示:

>dataframe1
  time(min)  A   B  C  D
0  0         1   2  3  4
1  1         ...........
2  2         ...........

我正在尝试在未来 5 分钟内对所有以目标为列(A 和 B)的数据帧进行 LSTM。我怎样才能让我的 X_test 和 X_train 从所有数据框中获取所有这些数据?另外我怎么可能得到他们的转变? 当我尝试制作测试数据和训练数据时,我尝试了这个:我制作了一个 3D 数据框,如下所示:

   dataframe 1       dataframe 2      dataframe 3
time   A  B  C  D        A  B  C D        A  B  C  D
0
1
2

我正在尝试使用此代码定义目标值

target_dataframe=['dataframe1','dataframe2', 'dataframe3']
target_column=['A','B']
df_targets = df[target_dataframe][target_dataframe].shift(-shift_steps)

我在这之后发现了这个错误

"['A','B'] "not in index"

但是,如果我只定义一个数据框进行预测,它不会显示错误

target_dataframe=['dataframe1'] 

但我希望我的模型同时适用于所有数据帧

我在这里真的很困惑,因为我无法通过时间转换来正确地进行预测。有人可以帮我吗?

【问题讨论】:

  • 您能否指定您的输入时间步长,即您希望预测下一个 5 个时间步长的时间步长。从问题中可以清楚地看出他的输出步骤是 5。C & D 列也代表这里的特征吗?
  • @dufrmbgr 谢谢。我想回顾 14 或 15 个时间步来预测下一个 5。我已经编辑了我的 3d 数据框的样子。我也很难为目标选择选择所需的数据框形状。

标签: python pandas machine-learning lstm recurrent-neural-network


【解决方案1】:

首先,让我们生成一些数据。 (100 个数据点)。假设我们正在查看 15 个数据点来预测接下来的 5 个。

import numpy as np

df = pd.DataFrame(np.random.rand(100, 4), columns=["A", "B", "C", "D"])
df["time"] = np.arange(100)

移动 15 个目标数据点,因为我们不想查看它们的“A”和“B”列,而应该查看接下来的 5 个。

df["A_shifted"] = df["A"].shift(-15)
df["B_shifted"] = df["B"].shift(-15)

A_shifted 和 B_shifted 是目标列

#Note - There are probably better ways to do this but for pedagogic purpose 
X = []
y = []
for i in range(len(df) - 15):
    X.append(df[["C", "D"]].iloc[i:i+15].values) #our features are C & D
    y.append(df[["A_shifted", "B_shifted"]].iloc[i:i+5].values) #target value next 5
X, y = np.array(X), np.array(y)

print(X.shape, y.shape)
#(85, 15, 2) (85, 5, 2)

注意 X 和 y 的形状。 X 有 85 个数据点,每个数据点的形状为 (15, 2)。这里的 15 代表我们希望预测接下来 5 个步骤的时间步长。 2 代表我们示例中的 2 个特征(列“C”和“D”)。

同样从y的形状看,85是数据点的个数,5是输出序列长度。 2 是目标变量“A”和“B”的个数。

这里输出的x和y的形状一般是pytorch、keras等大部分深度学习框架都需要的。

注意:由于移位,您可能会在目标中看到一些 nan 值,您可能需要删除这些值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-15
    • 2018-01-30
    • 2023-03-03
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    相关资源
    最近更新 更多