Этот скрипт реализует полный пайплайн для прогнозирования временных рядов с помощью рекуррентных нейронных сетей (GRU или LSTM) на PyTorch. Вот основные этапы работы:
Конфигурация: Все параметры (пути к данным, архитектура модели, параметры обучения, режим работы) задаются в dataclass Config.
Загрузка и подготовка данных:
Поддерживается загрузка из Excel/CSV или генерация синтетических данных.
Числовые признаки очищаются и преобразуются.
Формируются окна (последовательности) для обучения RNN.
Масштабирование: Признаки и целевая переменная масштабируются с помощью MinMaxScaler только по обучающей выборке.
Разделение на train/val/test: Данные делятся на обучающую, валидационную и тестовую выборки.
Модель: Определён класс RecurrentRegressor — это GRU или LSTM с несколькими слоями и полносвязной "головой" для регрессии.
Обучение:
Используется AdamW, MSELoss, scheduler по валидационной ошибке.
Реализован early stopping.
В процессе обучения выводятся метрики.
Оценка: После обучения модель тестируется, считаются метрики (MSE, RMSE, MAE).
Визуализация: Если установлен matplotlib, строятся графики обучения и предсказаний.
Сохранение артефактов: Сохраняются веса модели, скалеры и метаданные для последующего использования.
Режим предсказания: В режиме predict скрипт загружает артефакты и делает прогноз следующего значения целевой переменной.
Гибкость: Можно быстро переключаться между GRU/LSTM, train/predict, синтетическими/реальными данными.