【发布时间】:2020-05-08 09:44:33
【问题描述】:
我的时间序列数据有 2 个特点:
0 1
1/22/20 555.0 17.0
1/23/20 654.0 18.0
1/24/20 941.0 26.0
1/25/20 1434.0 42.0
1/26/20 2118.0 56.0
... ... ...
5/3/20 3506729.0 247470.0
5/4/20 3583055.0 251537.0
5/5/20 3662691.0 257239.0
5/6/20 3755341.0 263831.0
5/7/20 3845718.0 269567.0
[107 rows x 2 columns]
我正在尝试创建一个多元 LSTM 来对每一列进行预测。处理完数据后,训练和测试数组的形状如下:
Legend: (samples, time steps, features)
x_train: (67, 4, 2)
y_train: (67, 2)
x_test: (26, 4, 2)
y_test: (26, 2)
这是模型定义:
forecast_horizon = 4
feature_n = 2
early_stopping = EarlyStopping(patience=50, restore_best_weights=True)
model = Sequential()
model.add(LSTM(5, input_shape=(forecast_horizon, feature_n)))
model.add(Activation("relu"))
model.add(Dropout(0.1))
model.add(Dense(feature_n))
model.add(Activation("relu"))
model.compile(loss="mean_squared_error", optimizer="adam")
history = model.fit(x_train, y_train, epochs=1000, batch_size=1, verbose=0,
callbacks=[early_stopping], validation_split=0.2)
预测全为零。 test_predictions = model.predict(x_test) 的输出为:
[[0.00839295 0.007538 ]
[0. 0. ]
[0.00946797 0.00663883]
[0. 0. ]
[0. 0. ]
... ...
[0.0007435 0. ]
[0.00116019 0.00032421]
[0. 0. ]
[0. 0. ]
[0. 0. ]]
这是简单地训练模型更长时间并调整其超参数的问题,还是有其他可能影响这一点的事情?如何实现合适的多元 LSTM?
【问题讨论】:
-
训练前你的 y 缩放了吗?
-
@MarcoCerliani 是的,我取了数据的 ln,然后在将其提供给网络之前对其进行了 3 次差分。
-
预测时不要忘记调整比例
标签: python tensorflow machine-learning keras lstm