基于 LSTM 的时间序列预测:Python 代码详解
基于 LSTM 的时间序列预测:Python 代码详解
本篇博客将介绍如何使用 LSTM(长短期记忆)神经网络进行时间序列预测,并提供详细的 Python 代码示例。
import numpy
from keras.models import Sequential
from keras.layers import Dense, LSTM
# 设置回溯时间步数
look_back = 2
# 使用 create_dataset 函数将数据转换为输入输出
trainX, trainY = create_dataset(train, look_back)
testX, testY = create_dataset(test, look_back)
# 将输入数据 reshape 为 [samples, time steps, features] 的格式
trainX = numpy.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))
testX = numpy.reshape(testX, (testX.shape[0], 1, testX.shape[1]))
# 创建 LSTM 模型
model = Sequential()
model.add(LSTM(4, input_shape=(1, look_back))) # LSTM 层,输出大小为 4
model.add(Dense(1)) # 全连接层
# 编译模型
model.compile(loss='mean_squared_error', optimizer='adam')
# 训练模型
model.fit(trainX, trainY, epochs=100, batch_size=2, verbose=2)
代码解析:
-
数据预处理:
look_back = 2表示使用前两个时间步的数据来预测下一个时间步的数据。create_dataset函数 (需自行定义) 用于将原始时间序列数据转换为输入输出数据,其中look_back参数决定了输入数据的窗口大小。numpy.reshape函数将输入数据的形状转换为[samples, time steps, features],这是 LSTM 层所要求的输入格式。
-
模型构建:
- 使用
Sequential创建一个顺序模型。 - 添加一个 LSTM 层,输出大小为 4,输入形状为
(1, look_back),表示每个时间步只有一个特征。 - 添加一个全连接层
Dense,用于输出最终预测值。
- 使用
-
模型编译:
- 使用
mean_squared_error作为损失函数,这是回归问题常用的损失函数。 - 使用
adam优化器进行模型训练。
- 使用
-
模型训练:
- 使用训练数据
trainX和trainY对模型进行训练。 - 设置迭代次数
epochs为 100,批大小batch_size为 2。
- 使用训练数据
总结:
这段代码展示了使用 LSTM 进行时间序列预测的基本步骤。你可以根据自己的数据集和预测目标修改代码中的参数和模型结构。
原文地址: https://www.cveoy.top/t/topic/fZej 著作权归作者所有。请勿转载和采集!