Как стандартизировать (и инвертировать прогнозы) в многомерной многоэтапной реализации LSTM в Керасе - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть рабочая (хотя и неоптимизированная) реализация многоэтапной, многоэтапной модели прогнозирования временных рядов с использованием LSTM с использованием данных тикера для NYSE: ECL. Реализация здесь: https://github.com/mintgreenstrat/SO_LSTM/tree/master

Мне нужно применить масштабирование, потому что я планирую добавить в кучу больше функций (таких как Volume), которые имеют совершенно другой масштаб. Применение скейлера мин / макс в том же 4-х функциональном примере достаточно просто, затем тренировка модели и составление прогноза.

Что я не могу сделать для жизни, так это получить прогноз (yhat), X_test и y_test возвращаются в правильную форму, чтобы инвертировать масштабирование. Я пытался адаптировать пример, но я просто не могу понять это правильно, и я теряюсь во всем этом.

На данный момент, я действительно пытаюсь понять:
а) Я сделал ошибку при настройке данных в правильной форме с time_series_to_supervised шаги
б) Это просто простое изменение на np.concatenate(yhat, X_test[:, -(n_features -1):], axis=1)
c) Оба a & c
г) Что-то еще

Для чего это стоит, моя интуиция говорит б) ...

1 Ответ

0 голосов
/ 28 февраля 2020

Я наконец-то нашел решение этой проблемы с помощью этого поста на r / MLQuestions sub reddit .

Теперь я разбиваю набор данных на X, y и подгоняю отдельный масштабировать до каждого, прежде чем я изменю форму в 3D для ввода в LSTM. Это означает, что на бэкэнде мне просто нужно изменить форму с 3D на 2D, чтобы вызвать функцию inverse_transform. Кажется, я сделал это сложнее, чем нужно.

Я обновил репозиторий github на случай, если это кому-нибудь поможет в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...