基于 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)

代码解析:

  1. 数据预处理:

    • look_back = 2 表示使用前两个时间步的数据来预测下一个时间步的数据。
    • create_dataset 函数 (需自行定义) 用于将原始时间序列数据转换为输入输出数据,其中 look_back 参数决定了输入数据的窗口大小。
    • numpy.reshape 函数将输入数据的形状转换为 [samples, time steps, features],这是 LSTM 层所要求的输入格式。
  2. 模型构建:

    • 使用 Sequential 创建一个顺序模型。
    • 添加一个 LSTM 层,输出大小为 4,输入形状为 (1, look_back),表示每个时间步只有一个特征。
    • 添加一个全连接层 Dense,用于输出最终预测值。
  3. 模型编译:

    • 使用 mean_squared_error 作为损失函数,这是回归问题常用的损失函数。
    • 使用 adam 优化器进行模型训练。
  4. 模型训练:

    • 使用训练数据 trainXtrainY 对模型进行训练。
    • 设置迭代次数 epochs 为 100,批大小 batch_size 为 2。

总结:

这段代码展示了使用 LSTM 进行时间序列预测的基本步骤。你可以根据自己的数据集和预测目标修改代码中的参数和模型结构。

基于 LSTM 的时间序列预测:Python 代码详解

原文地址: https://www.cveoy.top/t/topic/fZej 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录