我有一个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)
仍然抛出相同的错误。
感谢您的任何帮助。
[仅在将变换应用于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)