逆变换在LSTM预测中引发错误

问题描述 投票:0回答:1

我有一个LSTM,它将预测下一个时间步的值。因此,我的输入将按如下所示缩放到LSTM中:

test_X = reframed.values
test_X = test_X[:test_X.shape[0], :]
scaler = PowerTransformer()
test_X = scaler.fit_transform(test_X)
test_X = test_X.reshape((test_X.shape[0], 1, test_X.shape[1]))
print(test_X.shape) 

((1,1,17)

然后我预测如下:

yhat = model.predict(test_X)

而且我对此很有价值。

现在,我想对其进行反比例缩放,所以我应用

inv_yhat = scaler.inverse_transform(yhat)

但是这会引发如下错误:

ValueError:输入数据具有与拟合不同的特征数量数据。应该有17,数据有1

不确定模型为什么已经预测了该值但只剩下反比例比例时,为什么会抛出此错误。

编辑:

我在训练中使用像这样的洁牙机

scaler_x = PowerTransformer()
scaler_y = PowerTransformer()
train_X = scaler_x.fit_transform(train_X)
train_y = scaler_y.fit_transform(train_y.reshape(-1,1))
test_X = scaler_x.fit_transform(test_X)
test_y = scaler_y.fit_transform(test_y.reshape(-1,1))
print(train_X.shape, train_y.shape, test_X.shape, test_y.shape) 



import joblib
joblib.dump(scaler_x, 'scaler_x.gz')
joblib.dump(scaler_y, 'scaler_y.gz')

然后我按如下方式缩放我的新游戏:

scaler = joblib.load('scaler.gz')
test_X =scaler.transform(test_X)

仍然抛出相同的错误。

感谢您的任何帮助。

python scikit-learn transform lstm valueerror
1个回答
1
投票

[仅在将变换应用于x数据时,您试图对y数据进行逆变换。特征数量上的差异(x为17; y为1)是导致出现此错误的原因

编辑:

例如,您需要为x和y数据创建单独的缩放器。>

scaler_x = PowerTransformer().fit(test_x)
scaler_y = PowerTransformer().fit(test_y) # can be any transformer
scaled_test_x = scaler_x.transform(test_x)
scaled_test_y = scaler_y.transform(test_y)

然后,当您想根据拟合模型进行预测时:

yhat = model.predict(test_x)
inv_yhat = scaler_y.inverse_transform(yhat)
© www.soinside.com 2019 - 2024. All rights reserved.