Проблемы с обратным масштабированием во временных рядах LSTM - PullRequest
0 голосов
/ 23 апреля 2020

Я создаю LSTM с четырьмя функциями и следую приведенному ниже руководству

https://machinelearningmastery.com/multivariate-time-series-forecasting-lstms-keras/

Так что я могу отставать от 5 лагов и 4 функций, чтобы я мог успешно скомпилировать модель до тех пор, пока

# reshape input to be 3D [samples, timesteps, features]
train_X = train_X.reshape((train_X.shape[0], timesteps, feature_size))
test_X = test_X.reshape((test_X.shape[0], timesteps, feature_size))
print(train_X.shape, train_y.shape, test_X.shape, test_y.shape)
history = model.fit(train_X, train_y, epochs=50, batch_size=72, validation_data=(test_X, test_y), verbose=2, shuffle=False)

Проблема возникает в

    # invert scaling for forecast
    inv_yhat = concatenate((yhat, test_X[:, -(feature_size-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[:, -(feature_size-1):]), axis=1)
    inv_y = scaler.inverse_transform(inv_y)
    inv_y = inv_y[:,0]

Так что здесь, вместо 7 в учебнике, я применяю 3, которое является feature_size (нет всех функций, которые равны 4 в моем случае) -1. Но когда я применяю это, я получаю ошибку, такую ​​как

, все входные массивы должны иметь одинаковое количество измерений, но массив с индексом 0 имеет 2 измерения, а массив с индексом 1 имеет 3 измерения

Любая помощь приветствуется.

...