python - 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仓库了
解决方案
这是因为模型预测形状为 (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,:])
推荐阅读
- wordpress - Divi 是否具有允许用户从空白页面构建帖子的功能?
- javascript - 使用 jQuery 从固定到可滚动
- python - 如何在 Pandas DataFrame 中选择具有多个值的行
- javascript - TypeError:部署到 Netlify 后无法将类作为函数调用?
- centos7 - 扁平网络不起作用 - Openstack Train
- svg - Safari MacOS 外来对象在 svg 中未正确缩放
- c++ - 两个进程绑定并监听相同的地址和端口,但是如何确保它们都能接收到传入的消息?
- python - 将 pandas df 列中的值除以数字
- java - 多个线程中的实例对象是否可以访问相同的静态类和变量?
- pycharm - PyCharm:当光标移过它们时,有没有办法阻止代码折叠自动展开?