逆变换在 LSTM 预测中抛出错误
inverse transform throws error in LSTM prediction
我有一个 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: Input data has a different number of features than fitting
data. Should have 17, data has 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)
我有一个 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: Input data has a different number of features than fitting data. Should have 17, data has 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)