I am trying an LSTM
model using tensorflow
following this tutorial .
I am having trouble understanding why am I getting an error in my test set when I try to invert scaling for forecast (line 86 in the tutorial).
After loading the dataset and created featured, following is what I did for reframed
dataset,
# split into train and test sets
values = reframed.values
split_point = len(reframed)- 168
train = values[ : split_point, :]
test = values[split_point: , :]
# split into input and outputs
train_X, train_y = train[:, :-1], train[:, -1]
test_X, test_y = test[:, :-1], test[:, -1]
# reshape input to be 3D [samples, timesteps, features]
train_X = train_X.reshape((train_X.shape[0], 1, train_X.shape[1]))
test_X = test_X.reshape((test_X.shape[0], 1, test_X.shape[1]))
print(train_X.shape, train_y.shape, test_X.shape, test_y.shape)
>> (2399, 1, 39) (2399,) (168, 1, 39) (168,)
# design network
model = Sequential()
model.add(LSTM(50, input_shape=(train_X.shape[1], train_X.shape[2])))
model.add(Dense(1))
model.compile(loss='mae', optimizer='adam')
# fit network
history = model.fit(train_X, train_y, epochs=50, batch_size=72, validation_data=(test_X, test_y), verbose=2, shuffle=False)
# make a prediction
yhat = model.predict(test_X)
test_X = test_X.reshape((test_X.shape[0], test_X.shape[2]))
inv_yhat = np.concatenate((yhat, test_X[:, 1:]), axis=1)
After this step, the following code that has scaler.invert_transform
throws the error.
inv_yhat = scaler.inverse_transform(inv_yhat)
ValueError: operands could not be broadcast together with shapes (168,39) (41,) (168,39)
Shape,
test_X.shape
>> (168, 1, 39)
yhat.shape
>>(168,1)
inv_yhat.shape
>> (168,39)
Any help or sugeestions would be appreciated!
print(train_X.shape, train_y.shape, test_X.shape, test_y.shape)
and I got(2399, 1, 39) (2399,) (168, 1, 39) (168,)
like this. $\endgroup$