pandas MinMaxScaler中出现形状错误时无法广播操作数

z31licg0  于 2022-12-16  发布在  其他
关注(0)|答案(4)|浏览(150)

我正在用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)

请不要给予我小的自我创建数组的例子。我正在寻找大数据环境下的建议。
谨致问候

a5g8bdjr

a5g8bdjr1#

我认为问题是一个Tensor有31个元素(31,630,3),而另一个有32个元素(32,),因此它不能被广播,至少有一个维度必须匹配。

cnjp1d6j

cnjp1d6j2#

我认为问题是什么先被缩放,
首先,始终将规模、目标和功能分开
我总是先标度自变量,然后再标度目标变量,
我不知道为什么,但是MinMaxscaler或任何缩放技术都考虑到了最后缩放的内容。
预测后,您可以使用inverse_transform来计算。

pressure = scaler.inverse_transform(y_train_pred_lr.values.reshape(-1,1))
print(pressure)

最好将目标和特性分开,在自变量之后缩放目标。希望这能解决你的问题,如果能,请告诉我。
如果先缩放要素,后缩放目标,则会给予广播错误

q5iwbnjs

q5iwbnjs3#

最好使用两个不同的缩放示例,例如,“scaler”用于自变量,“scaler1”用于因变量,即目标变量。

eufgjt7s

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))

相关问题