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

如何在多变量LSTM销售预测中利用未来已知特征数据?

结合未来已知特征优化LSTM销售额预测方案

针对你已用150天数据构建多变量LSTM,但需加入明日已知特征(工作日=1、节假日=1、降雨)做预测的需求,可按以下步骤调整:

1. 重构训练样本结构

现有LSTM可能仅用历史时序数据(过去N天的特征+销售额)预测下一日销售额,现在需要把目标日的已知特征纳入训练输入,让模型学习“历史趋势+未来已知条件”与销售额的关联:

  • 定义时序窗口大小(比如7天,可根据数据调整),每个训练样本包含:
    • 过去N天的完整时序数据:[[Weekday_t-N, Holiday_t-N, Weather_encoded_t-N, Sales_t-N], ..., [Weekday_t-1, Holiday_t-1, Weather_encoded_t-1, Sales_t-1]]
    • 目标日t的已知特征:[Weekday_t, Holiday_t, Weather_encoded_t]
  • 将这两部分数据组合后作为模型输入,目标输出为Sales_t

2. 预处理分类特征

数据中Weather是分类变量(Rainy/Sunny/Cloudy),需转为数值型:

  • 独热编码(适合无顺序分类):
    import pandas as pd
    df = pd.get_dummies(df, columns=['Weather'], drop_first=True)
    
  • 标签编码(适合有顺序分类,比如天气对销售额影响有强弱):
    from sklearn.preprocessing import LabelEncoder
    le = LabelEncoder()
    df['Weather'] = le.fit_transform(df['Weather'])
    

注意:预测明日天气时,必须使用和训练时一致的编码规则转换(比如Rainy对应0,就用0输入)

3. 调整LSTM模型结构

采用双分支输入结构,分别处理时序数据和未来已知特征:

from keras.models import Model
from keras.layers import LSTM, Dense, Input, Concatenate

# 分支1:处理历史时序数据
timesteps = 7  # 过去7天的数据
n_features = 4  # 历史数据特征数:Weekday+Holiday+Weather_encoded+Sales
seq_input = Input(shape=(timesteps, n_features))
lstm_out = LSTM(64, activation='relu')(seq_input)

# 分支2:处理目标日的已知特征
future_features_input = Input(shape=(3,))  # Weekday+Holiday+Weather_encoded
dense_future = Dense(32, activation='relu')(future_features_input)

# 拼接两个分支的输出
combined = Concatenate()([lstm_out, dense_future])
final_out = Dense(1)(combined)

# 构建并编译模型
model = Model(inputs=[seq_input, future_features_input], outputs=final_out)
model.compile(optimizer='adam', loss='mse')

4. 明日预测的具体操作

当预测明日销售额时:

  1. 提取最近N天的历史数据(比如最近7天的Weekday、Holiday、编码后的Weather、Sales),整理成形状为(1, timesteps, n_features)的时序输入
  2. 将明日的已知特征转换为数值型(比如Weekday=1, Holiday=1, Weather=Rainy编码后的值),整理成形状为(1, 3)的特征输入
  3. 用模型预测:
    # 假设seq_data是预处理后的最近7天时序数据,future_data是明日的特征数据
    predicted_sales = model.predict([seq_data, future_data])
    

关键注意事项

  • 训练时的特征预处理规则(编码、归一化)必须和预测时完全一致,比如如果训练时对Sales做了归一化,预测后要反归一化得到真实销售额
  • 可尝试调整时序窗口大小、LSTM层神经元数量,优化模型预测效果

内容的提问来源于stack exchange,提问作者K.Doruk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:56:01