lstm多步预测代码
时间: 2024-10-11 17:01:39 浏览: 43
LSTM(长短期记忆网络)常用于时间序列数据的预测任务,特别是多步预测。以下是一个简单的Python示例,使用Keras库实现LSTM进行多步预测:
```python
# 导入必要的库
import numpy as np
from keras.models import Sequential
from keras.layers import LSTM, Dense
# 假设我们有训练数据 X_train (时间序列) 和 y_train (目标值)
X_train, y_train = ..., ...
# 数据预处理(例如归一化、填充等)
X_train = ... # 需要转换成适合LSTM输入的格式,如形状(n_samples, timesteps, input_dim)
y_train = ... # 同理,需要调整成合适的形式
# 创建模型
model = Sequential()
model.add(LSTM(units=50, return_sequences=True, input_shape=(X_train.shape[1], X_train.shape[2]))) # 返回序列,便于多步预测
model.add(LSTM(units=50))
model.add(Dense(units=y_train.shape[1])) # 输出层与目标变量维度匹配
# 编译模型
model.compile(optimizer='adam', loss='mean_squared_error')
# 模型训练
model.fit(X_train, y_train, epochs=100, batch_size=32)
# 对于多步预测,我们需要循环提取并预测多个时间步的结果
def multi_step_prediction(model, data, steps):
predicted = []
for i in range(steps):
x_input = data[i:]
x_input = np.reshape(x_input, (1, len(x_input), data.shape[1]))
yhat = model.predict(x_input, verbose=0)
predicted.append(yhat)
data = np.concatenate((data[:-1], yhat), axis=0)
return predicted
steps = 3 # 我们想要预测的未来时间步数
predictions = multi_step_prediction(model, X_train[:, -1, :], steps)
阅读全文