我正在用数据集做一个基于 LSTM 的模型。我使用标准化方法将我的数据放在区间 (0, 1) 中,如下所示:
scaler = MinMaxScaler(feature_range=(0, 1))
scaler = scaler.fit(df_train)
df_train = scaler.transform(df_train)
df_test = scaler.transform(df_test)
在标准化之后,我重塑我的数据以获得:
x_train (3125, 50, 5)
y_train (3125, 1)
x_test (1000, 50, 5)
y_test (1000, 1)
该模型有效并且我得到了预测,但是当我想要inverse_transform
我的数据时,我得到以下错误:
yhat = model.predict(x_test)
yhat = scaler.inverse_transform(yhat)
ValueError:形状 (1000,1) 的不可广播输出操作数与广播形状 (1000,5) 不匹配
所以我通过更改与我的变量对应的名称来尝试这个示例代码:
yhat = model.predict(test_X)
test_X = test_X.reshape((test_X.shape[0], test_X.shape[2]))
# invert scaling for forecast
inv_yhat = concatenate((yhat, test_X[:, 1:]), axis=1)
inv_yhat = scaler.inverse_transform(inv_yhat)
inv_yhat = inv_yhat[:,0]
# invert scaling for actual
test_y = test_y.reshape((len(test_y), 1))
inv_y = concatenate((test_y, test_X[:, 1:]), axis=1)
inv_y = scaler.inverse_transform(inv_y)
inv_y = inv_y[:,0]
# calculate RMSE
rmse = sqrt(mean_squared_error(inv_y, inv_yhat))
print('Test RMSE: %.3f' % rmse)
但我在第 2 行收到此错误:
ValueError:无法将大小为 250000 的数组重塑为形状 (1000,5)