You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LSTM多输出时间序列预测:3特征时序数据的多步预测问题

How to Do 25-Step Multi-Feature Time Series Prediction Using 25-Step History

Got it, let's walk through how to solve this multi-step, multi-feature time series prediction problem—since you’ve already nailed single-feature forecasting, this is just a logical extension of what you already know!

1. First, Restructure Your Dataset

The core shift here is redefining your input-output pairs to account for all 3 features and the 25-step prediction window. Here's what that looks like:

  • Input (X): Each sample is a sequence of 25 consecutive time steps, including all 3 features (A, B, C). So each X sample has a shape of (25, 3).
  • Output (Y): Each sample is the next 25 consecutive time steps, also including all 3 features. So each Y sample has a shape of (25, 3).

For example:

  • The first training sample: X = time steps 1–25 (all 3 features), Y = time steps 26–50 (all 3 features)
  • The second training sample: X = time steps 2–26, Y = time steps 27–51
  • And so on, until you can't create a full 25+25 window anymore.

Here's a quick Python snippet to build this dataset (using NumPy):

import numpy as np

# Replace this with your actual (1000, 3) dataset
raw_data = np.array([[131, 111, 100], [131, 110, 120], ..., [131, 100, 100]])

seq_length = 25  # Past steps to use for training
pred_length = 25  # Future steps to predict

X, y = [], []
for i in range(len(raw_data) - seq_length - pred_length + 1):
    # Grab 25 past steps of all 3 features
    X.append(raw_data[i:i+seq_length, :])
    # Grab the next 25 steps of all 3 features
    y.append(raw_data[i+seq_length:i+seq_length+pred_length, :])

# Convert to numpy arrays (final shapes: X=(951,25,3), y=(951,25,3))
X = np.array(X)
y = np.array(y)

2. Adjust Your Model for Multi-Feature, Multi-Step Output

Since you already have experience with single-feature models, you can reuse architectures like LSTM/GRU or Transformers—you just need to tweak them to handle 3 input features and output 25 steps of 3 features.

Example LSTM Model (Keras/TensorFlow)

The key here is using TimeDistributed to ensure the model outputs a prediction for every time step in the 25-step window, not just the last one:

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

model = Sequential([
    # Input shape matches our X samples: (25 time steps, 3 features)
    LSTM(64, return_sequences=True, input_shape=(seq_length, 3)),
    LSTM(32, return_sequences=True),
    # TimeDistributed wraps the Dense layer to output 3 features per time step
    TimeDistributed(Dense(3))
])

model.compile(optimizer='adam', loss='mean_squared_error')

3. Critical Training & Prediction Tips

  • Normalize Your Features: Since your features might have different ranges (e.g., A is always 131, B/C vary between 100–111), normalize each feature individually using MinMaxScaler or StandardScaler. Save each scaler to reverse the normalization after prediction and get real-world values.
  • Don't Shuffle Your Data: Time series data has temporal order—split your dataset into training/validation sets without shuffling (e.g., use the first 80% of samples for training, the last 20% for validation).
  • Prediction Workflow: Once trained, take the last 25 steps of your raw data (time steps 976–1000) as input, and the model will output 25 steps of predicted A/B/C values. If you need to predict beyond that (e.g., another 25 steps), you can do rolling prediction (append the predicted 25 steps to your data and use the new last 25 steps as input), but keep in mind this will accumulate error over time.

4. Common Pitfalls to Avoid

  • Forgetting TimeDistributed: Without this layer, your model will only output the last time step's 3 features, not all 25 steps.
  • Mismatched Input/Output Shapes: Double-check that your X and y arrays have the correct shapes ((num_samples, seq_length, 3) and (num_samples, pred_length, 3) respectively).
  • Ignoring Constant Features: Your A feature is always 131—your model will quickly learn this and predict 131 for future steps, which is fine, but if A ever changes in new data, make sure your training data includes those variations to keep the model robust.

内容的提问来源于stack exchange,提问作者user5458635

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:15:50