我正在用Python开发一个预测模型,基于从2010年q-1开始的前45个季度的历史数据,我正在使用LSTM进行预测,同时尝试实现下面这行代码:
y_perd_future = scaler.inverse_transform(forecast_copies)[:,0]
X = X.copy()
936 if self.with_std:
937 X *= self.scale_
938 if self.with_mean:
939 X += self.mean_
ValueError: operands could not be broadcast together with shapes (31,630,3) (32,) (31,630,3)
请不要给予我小的自我创建数组的例子。我正在寻找大数据环境下的建议。
谨致问候
4条答案
按热度按时间a5g8bdjr1#
我认为问题是一个Tensor有31个元素(31,630,3),而另一个有32个元素(32,),因此它不能被广播,至少有一个维度必须匹配。
cnjp1d6j2#
我认为问题是什么先被缩放,
首先,始终将规模、目标和功能分开
我总是先标度自变量,然后再标度目标变量,
我不知道为什么,但是MinMaxscaler或任何缩放技术都考虑到了最后缩放的内容。
预测后,您可以使用
inverse_transform
来计算。最好将目标和特性分开,在自变量之后缩放目标。希望这能解决你的问题,如果能,请告诉我。
如果先缩放要素,后缩放目标,则会给予广播错误
q5iwbnjs3#
最好使用两个不同的缩放示例,例如,“scaler”用于自变量,“scaler1”用于因变量,即目标变量。
eufgjt7s4#
我找到了最简单的解决方案,示例化两个定标器,一个用于目标变量,另一个用于独立变量,简单。
'特征= X列
x定标器=最小最大定标器()
X_train[特征] = xscaler.fit_转换(X_train[特征])
X_瓦尔[特征] = x定标器.变换(X_val[特征])
X_test[特征] = x定标器.变换(X_test[特征])
缩放比例=最小最大缩放比例()
y_train = yscaler.fit_转换(y_train.值.整形(-1,1))
y_瓦尔= y定标器.变换(y_val.值.整形(-1,1))