Learn AI with Python · 课时

使用 LSTM 进行时间序列预测

序列准备、无状态与有状态 LSTM、回看窗口,以及多步预测。

第 4 / 4 课13 个步骤

使用 LSTM 进行时间序列预测 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。

为什么使用 LSTM 处理时间序列

LSTM(长短期记忆)是一种循环神经网络,它利用门控记忆单元记住长序列中的模式。它能够建模 ARIMA 无法处理的非线性依赖关系,因此在数据充足时非常适合处理复杂序列。

序列窗口化

LSTM 从窗口中学习:窗口是用于预测下一个值的固定长度历史步骤切片。例如,窗口长度为 10 时,模型会观察第 1 至第 10 步来预测第 11 步,然后观察第 2 至第 11 步来预测第 12 步,以此类推。

在代码中创建窗口

辅助函数会将一维序列转换为输入与目标值对。

import numpy as np

def make_windows(series, window):
    X, y = [], []
    for i in range(len(series) - window):
        X.append(series[i:i+window])
        y.append(series[i+window])
    return np.array(X), np.array(y)

X, y = make_windows(values, window=10)

缩放数据

神经网络在经过缩放的输入上训练效果更好。使用 MinMaxScaler 将值映射到 [0, 1],并记得稍后对预测结果执行逆变换。

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
scaled = scaler.fit_transform(values.reshape(-1, 1))

为 LSTM 重塑数据形状

Keras 的 LSTM 层要求输入形状为 (样本数, 时间步数, 特征数)。对于单变量序列,特征数为 1。

# X is (samples, timesteps); add a feature axis
X = X.reshape((X.shape[0], X.shape[1], 1))
print(X.shape)  # (samples, timesteps, 1)

构建模型

一种简单的架构是:使用一个 LSTM(50) 层连接到一个预测下一个值的 Dense(1) 输出层。

from tensorflow.keras import Sequential
from tensorflow.keras.layers import LSTM, Dense

model = Sequential([
    LSTM(50, input_shape=(X.shape[1], 1)),
    Dense(1)
])

为什么使用单个输出单元

提前一步进行预测属于只有一个数值输出的回归问题,因此最终层使用不带激活函数的 Dense(1)。如果要进行多步预测,则可以使用 Dense(n_steps)。

编译

请使用 Adam 优化器和均方误差(mse)损失,这是对连续目标执行回归时的标准选择。

model.compile(optimizer="adam", loss="mse")

训练

在窗口化数据上训练模型。验证集划分会在多个训练轮次中监控模型的泛化能力。

history = model.fit(
    X, y,
    epochs=50,
    batch_size=32,
    validation_split=0.2
)

进行预测

在新窗口上进行预测,然后执行逆变换以恢复到原始尺度。

pred_scaled = model.predict(X_test)
pred = scaler.inverse_transform(pred_scaled)

堆叠与调优

对于更复杂的序列,可以堆叠多个 LSTM(除最后一层外,其他层都将 return_sequences=True),并加入丢弃层。更多层可以捕获更深层次的模式,但需要更多数据,也会增加过拟合风险。

model = Sequential([
    LSTM(50, return_sequences=True, input_shape=(X.shape[1], 1)),
    LSTM(50),
    Dense(1)
])

快速检查

请测试您对 LSTM 预测的掌握程度。

回顾

您准备了窗口,使用 MinMaxScaler 进行了缩放,将数据重塑为(样本数, 时间步数, 特征数),构建了 LSTM(50) + Dense(1),使用 Adam/均方误差进行编译,完成了训练和预测(并通过逆变换恢复原始尺度)。时间序列课程到此结束。下一门课程:推荐系统。

免费开始

用 AI 导师学习 Python — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
53
课程
225

常见问题解答

「使用 LSTM 进行时间序列预测」课时是免费的吗?

是的 — 「使用 LSTM 进行时间序列预测」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。

「使用 LSTM 进行时间序列预测」这节课中我会学到什么?

序列准备、无状态与有状态 LSTM、回看窗口,以及多步预测。 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Learn AI with Python 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「使用 LSTM 进行时间序列预测」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Learn AI with Python 课中编写并运行代码吗?

能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 时间序列的组成与平稳性
  2. ARIMA 与 SARIMA 模型
  3. 使用 Prophet 自动预测
  4. 使用 LSTM 进行时间序列预测
← 返回 Learn AI with Python