【问题标题】:How to use LSTM to make prediction with both feature from the past and the current ones?如何使用 LSTM 对过去和当前的特征进行预测?
【发布时间】:2025-11-24 06:05:01
【问题描述】:

假设我有一个像下面这样的数据框,Discount 是从selling price/list price 计算出来的,unit_sales 是当天售出的商品数量。

如果我要使用 LSTM 进行第二天的销售预测(绿色框中的数据),基于过去 3 天的销售和折扣(红色框中的数据框),加上第二天要打折(紫色方框中的数据框),我应该如何重塑数据框?

如果我不必考虑当前或未来时间步的折扣,这可能真的很容易,我只需将其重塑为 (# of samples - 3, 3, 2)

【问题讨论】:

    标签: python tensorflow keras lstm rnn


    【解决方案1】:

    我会这样做 - 而不是在您的模型中输入一个输入,您可以有 2:过去 3 天的折扣/销售对,其形状为您建议的(样本数 -3、3、2)和另一个形状 (1,) 对应于当前折扣。您可以通过 LSTM 运行前 3 天,并将当前折扣连接到 LSTM 的输出。使用函数式 API 将如下所示:

    inp_past=Input((3,2))
    lstm=LSTM(32)(inp_past)
    inp_now=Input((1,))
    concatenation= concatenate([inp_now,lstm])
    output=Dense(1)(concatenation
    

    这对你有一点帮助吗?

    【讨论】:

    • 当然有帮助!让我试试看。
    • 如果你不介意再问一个问题,如果我想做多步预测,并且我将 LSTM 层的 return_sequences 设置为 true,我是否应该使用相同的函数(连接)来合并输入(3, 1) 和第一个 LSTM 的输出?
    • 这真的取决于... 您可能希望通过重复命令重塑折扣信息,或者在生成数据时手动进行。您只能连接相同维度的事物,因此如果您过去的折扣/销售数据具有形状 (3,2),则折扣必须为 (3,1)
    • 对不起,我的英语表达不好,但你已经回答了我的意思,非常感谢你
    • 很高兴听到!请标记它已回答