我在为Keras准备RNN的输入数据时遇到了麻烦.
目前,我的培训数据维度是: (6752, 600, 13)
X_train并且Y_train都在这个方面.
我想把这些数据准备好SimpleRNN用于Keras.假设我们正在经历时间步骤,从步骤#0到步骤#599.假设我想使用input_length = 5,这意味着我想使用最近的5个输入.(例如步骤#10,#11,#12,#13,#14 @步骤#14).
我应该如何重塑X_train?
应该是(6752, 5, 600, 13)或应该是(6752, 600, 5, 13)吗?
什么形状应该Y_train在?
它应该是(6752, 600, 13)或(6752, 1, 600, 13)或(6752, 600, 1, 13)?
我正在尝试建立一个 LSTM 模型来预测股票第二天是上涨还是下跌。正如你所看到的,一个简单的分类任务让我陷入了困境几天。我仅选择 3 个功能来输入我的网络,下面我将展示我的预处理:
# pre-processing, last column has values of either 1 or zero
len(df.columns) # 32 columns
index_ = len(df.columns) - 1
x = df.iloc[:,:index_]
y = df.iloc[:,index_:].values.astype(int)
Run Code Online (Sandbox Code Playgroud)
删除任何 nan 值:
def clean_dataset(df):
assert isinstance(df, pd.DataFrame), "df needs to be a pd.DataFrame"
df.dropna(inplace=True)
indices_to_keep = ~df.isin([np.nan, np.inf, -np.inf, 'NaN', 'nan']).any(1)
return df[indices_to_keep].astype(np.float64)
df = clean_dataset(df)
Run Code Online (Sandbox Code Playgroud)
X然后我将选取 3 个选定的特征并显示和 的形状Y
selected_features = ['feature1', 'feature2', 'feature3']
x = x[selected_features].values.astype(float)
# s.shape (44930, 3)
# y.shape (44930, 1) …Run Code Online (Sandbox Code Playgroud)