首页 > 解决方案 > LSTM RNN 预测的反向缩放输出错误

问题描述

我使用 LSTM 模型来预测股票的未来open价格。在这里对数据进行了预处理,模型的构建和训练没有任何错误,我使用 Standard Scaler 来缩小 DataFrame 中的值。但是在从模型中检索预测时,当我使用该scaler.reverse()方法时,它给出了以下错误。

ValueError: non-broadcastable output operand with shape (59,1) doesn't match the broadcast shape (59,4)

完整代码是jupyter notebook太大,无法直接展示,所以我已经上传到git仓库了

标签: pythontensorflowkeraslstmrecurrent-neural-network

解决方案


这是因为模型预测形状为 (59, 1) 的输出。但是您的 Scaler 适合 (251, 4) 数据框。要么在 y 值形状的数据帧上创建一个新的缩放器,要么将模型密集层输出更改为 4 维而不是 1。缩放器适合的数据形状,它只会在scaler.inverse_transform.

旧代码 - 形状 (n,1)

trainY.append(df_for_training_scaled[i + n_future - 1:i + n_future, 0])

更新代码 - 形状 (n,4) - 使用所有 4 个输出

trainY.append(df_for_training_scaled[i + n_future - 1:i + n_future,:])


推荐阅读