Библиотека прогнозных моделей DSM
Project description
Библиотека прогнозных моделей DSM
Общая информация
Библиотека представляет собой набор решений для построения краткосрочного прогноза для временного ряда, содержащего информацию о выбросах вредных веществ в атмосферу.
Разработанный набор моделей основывается на различных математических и статистических подходах, включая методы машинного обучения, и могут учитывать разнообразные факторы, включая метеорологические условия или другие признаки.
Рассматриваемый пул моделей прогнозирования включает в себя устойчивые предиктивные модели, ансамблевые модели и модели селективного выбора:
- Модель усреднения по предыдущим дням в разные недели;
- Модель усреднения данных в последовательности предыдущих N дней;
- Модель Хольта-Винтерса;
- Модель SARIMA;
- Авторегрессионная модель с рекурсивным фильтром;
- Модель извлечения признаков с линейной регрессией;
- Модель извлечения признаков с нелинейной регрессией;
- Ансамблевая модель с линейной регрессией;
- Ансамблевая модель с нелинейной регрессией;
- Выбор модели с наименьшей ошибкой прошлого дня;
- Выбор модели с наименьшей ошибкой по нескольким дням;
- Выбор модели с помощью нейронной сети.
Быстрый старт
- Предполагается что на целевой машине уже установлен Python версии 3.10
- Создание виртуального окружения при помощи poetry poetry позволяет произвести кроссплатформенную установку приложения при этом избежать возможных конфликтов Установка стандартная, либо с использованием pip
for Linux: curl -sSL https://install.python-poetry.org | python3 - for Windows: (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py - pip install poetry
- Установка зависимостей сборка пакета, выполняется в соответствии с набором указанных в pyproject.toml, который содержит информацию о проекте. Предваритльно переходим в каталог с этим файлом.
poetry install --no-root --extras docs
poetry shell # Активация виртуального окружения
- Сборка пакета для локального размещения
poetry build
После чего сборка проекта будет размещена в dist текущего каталога
ls -l dist/
- Размещение в репозитории PyPi Для размещения в публичном репозитории у Вас должна быть настроена учетная запись на ресурсе: https://pypi.org, нужно предварительно получить API-токен, а также должен быть настроен сам poetry. Ниже приводится последовательность команд для этого
poetry config repositories.testpypi https://test.pypi.org/legacy/ # настройка
poetry config pypi-token.pypi your-api-token # настройка
poetry publish --build
- Документирование библиотеки
mkdir DSM/docs
cd DSM/docs
poetry run sphinx-build -b html . build
При синхронизации с удаленной веткой development автоматически происходит выгрузка документации по DSM на http://eco-grant-ai.devops-03.hse.perm.ru
from DSM import dsm_timeseries
from DSM import SDaysAVR
from DSM import rmse
- Определяется входная структура данных (используется pd.DataFrame или dsm_structure)
df = pd.read_csv('some_file.csv')
или
df = dsm_structure(
name = 'some_name',
data = pd_df,
value_column_name = 'some_name'
)
Также могут быть добавлены необязательные параметры (см. "Используемый формат данных") 7. Построение прогноза осуществляется как:
result = model.predict(
df,
datetime_column_name='time_column_name',
value_column_name='value_column_name',
day_points=count_day_points,
method='All'
)
Для более подробного ознакомления с параметрами входа и выхода см. "Документация"
В результате описанных действий будет построен базовый краткосрочный-суточный прогноз.
Используемый формат данных
Структура входных данных для модели должна иметь формат Padas DataFrame или внутреннюю структуру dsm_timeseries
-
В случае использования Pandas DataFrame классический фрейм с определенными столбцами времени и таргета для прогноза, пример:
time value 2023-01-01 00:00:00 5.824310 2023-01-01 01:00:00 7.003579 2023-01-01 02:00:00 6.759247 2023-01-01 03:00:00 4.314874 2023-01-01 04:00:00 8.952418 где: time - имя стобца с временной меткой типа datetime64[ns]
value - имя столбца таргета типа float64
-
Для создания объекта dsm_timeseries используются входные данные форматов: pd.DataFrame или np.ndarray. Использование структуры несет следующие преимущества:
- Автоматическая проверка типов данных ключевых столбцов;
- Автоматический расчет временного интервала между значениями;
- Полная совместимость с моделями библиотеки
Подробную информацию о структуре dsm_timeseries см. "Структура"
Структура библиотеки
Публичная версия библиотеки DSM содержит 6 основных модулей:
- Utils - утилиты для предобработки входных данных, содержит методы:
- загрузки данных из файлов csv/xlsx
- методы заполнения пропущенных значений
- трансформации в доли ПДК
- преобразования временных меток данных
- Structures - модуль, предоставляющий обертку для стандартных структур данных для работы с функционалом библиотеки:
- Представлен структурой dsm_timeseries
- Models - модуль базовых моделей прогнозирования, содержит модели прогнозирования значений концентраций вредных веществ в точке контроля. Реализованный список моделей:
- S Days AVR
- T Days AVR
- HW
- SARIMA
- STA
- Day Features LR
- Day Features NN
- Ensemble - модуль ансамблевых моделей прогнозирования. Содержит методы построения ансамблей из базовых моделей. Реализованный список моделей:
- EM LR
- EM NN
- Model_selection - модуль селективных моделей прогнозирования. Содержит методы селективного выбора из результатов базовых моделей. Список реализованных моделей:
- Naive Selector
- S Days Selector
- NN Selector
- Metrics - модуль расчета метрик для прогноза. Содержит методы расчета метрик качества регрессии - полученного прогноза. Список реализованных метрик:
- RMSE
- MAPE
- RSQUARE
Описание используемых моделей
T Days AVR
Модель усреднения по предыдущим дням в разные недели. Не имеет тренировочного периода и базируется на раннее известных данных.
from DSM import TDaysAVR
S Days AVR
Модель усреднения данных в последовательности предыдущих N дней. Не имеет тренировочного периода и базируется на раннее известных данных.
from DSM import SDaysAVR
HW
Модель Хольта-Винтерса. Модель тройного экспоненциального сглаживания с ориентацией на сезонные периоды. Имеет период обучения.
from DSM import HW
SARIMA
Модель SARIMA (Seasonal Autoregressive Integrated Moving Average), сезонная модель авторегрессии и скользящего среднего с интеграцией, представляет собой расширение модели ARIMA, включающее в себя компоненты для учета сезонности.
from DSM import SARIMA
Является надстройкой над statsmodels.SARIMAX
STA
Авторегрессионная модель с рекурсивным фильтром. Имеет период обучения. Использует RLS-фильтр для подбора весов.
from DSM import STA
Day Features LR
Модель извлечения признаков с линейной регрессией. Использует кастомную генерацию признаков для совершения прогноза. Имеет период обучения. Для подбора весов используется линейная регрессия (RLS-фильтр).
from DSM import DayFeaturesLR
Day Features NN
Модель извлечения признаков с нелинейной регрессией. Использует кастомную генерацию признаков для совершения прогноза. Имеет период обучения. Для подбора весов используется многослойный персептрон (MLP) с использованием keras.
from DSM import DayFeaturesNN
EM LR
Ансамблевая модель с линейной регрессией. Использует результаты базовых моделей из DSM.models. Подбор коэффициентов прогнозов осуществляется с помощью линейной регрессии (RLS-фильтр).
from DSM import EMLR
EM NN
Ансамблевая модель с нелинейной регрессией. Использует результаты базовых моделей из DSM.models. Подбор коэффициентов прогнозов осуществляется с помощью многослойнего персептрона (MLP).
from DSM import EMNN
Naive Selector
Выбор модели с наименьшей ошибкой прошлого дня. Подбор наилучшего прогноза для текущего дня на основе результатов предыдущего. Использует результаты базовых моделей из DSM.models.
from DSM import NaiveSelector
S Days Selector
Выбор модели с наименьшей ошибкой по нескольким дням. Подбор наилучшего прогноза для текущего дня на основе результатов предыдущих N дней. Использует результаты базовых моделей из DSM.models.
from DSM import SDaysSelector
NN Selector
Выбор модели с помощью нейронной сети. Подбор наилучшего прогноза для текущего дня на основе результатов классификации. Использует результаты базовых моделей из DSM.models.
from DSM import NNSelector
Структура
Структура dsm_timeseries определена в DSM.structures.
Создание структуры возможно из pd.DataFrame или нескольких np.ndarray, представляющих одномерные массивы для каждого типа обязательных столбцов: время и значение.
Параметры для определения структуры:
- name: наименование датасета (str)
- data: исходные данные прогноза - фрейм с временем и значением (pd.DataFrame) или np.ndarray со значениями таргета и дополнительными параметрами прогноза (например, погода)
- value_column_name (опционально): в случае использования pd.DataFrame - наименование столбца таргета (str)
- interval (опционально): интервал между значениями, определяется в формате (m,h,d), например: 20m, 1h, 1d (str)
- time_column_name (опционально): в случае использования pd.DataFrame, наименование столбца с временной меткой (str)
- value_column_index (опционально): в случае использования np.ndarray, индекс столбца таргета, в случае размерности более 1, остальные столбцы используются как дополнительные признаки (int)
- datetime_arr (опционально): в случае использования np.ndarray, список временных меток. Проверяется строгое совпадение с размерностью данных таргета (list)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dsm_0_2-0.2.tar.gz.
File metadata
- Download URL: dsm_0_2-0.2.tar.gz
- Upload date:
- Size: 30.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.10.9 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ca3cbad3181d8fc35730304b663b04fe49a2a77c9f5332c57535178d529b5eb
|
|
| MD5 |
cd3680f969f70499c626a554a43351d3
|
|
| BLAKE2b-256 |
900a907e9f92aedda10b61833dd9839c1ce0f228ec244f355a36a015fe8dac29
|
File details
Details for the file dsm_0_2-0.2-py3-none-any.whl.
File metadata
- Download URL: dsm_0_2-0.2-py3-none-any.whl
- Upload date:
- Size: 26.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.10.9 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b4307fc6f1f7a00882a3dd0192d371b7fd482bf3cd3a9705ad6925a423267fd
|
|
| MD5 |
9a713e2ad7d1027cb467e29ae26d5bad
|
|
| BLAKE2b-256 |
98b9cebdfc89c66885151963acb3f6146fe46d8089048ff1104d08ece0bb8f88
|