Skip to main content

ML tools for time series

Project description

Лого

shakhbanov_ml

ML инструменты для временного ряда

Добро пожаловать в shakhbanov_ml - набор инструментов для обработки и анализа временных рядов. Этот пакет включает в себя методы для восстановления пропусков, очистки данных и прогнозирования, специально разработанные для упрощения работы с временными рядами.


🚀 Установка

pip install shakhbanov

🔧 Использование

📥 Импортируем библиотеки и загружаем данные

import pandas as pd

from shakhbanov.metrics import wape
from shakhbanov.forecast import BurgerKing
from shakhbanov.cleaner import DataCleaner
from shakhbanov.kalman_gap_filler import KalmanGapFiller

data = pd.read_csv('timeseries.csv')

🔍 Восстанавливаем пропущенные периоды методом фильтра Калмана

# Инициализация KalmanGapFiller с параметрами
data = KalmanGapFiller(date_column='ds',                   # Колонка с датами
                       group_column='id',                  # Колонка с идентификаторами групп
                       target_columns=['value', 'value2'], # Колонки с целевыми значениями 
                       tqdm=True,                          # Показ прогресса выполнения
                       parallel=True                       # Использование параллельной обработки
                   ).process(data)                         # Обработка данных

🧹 Очищаем данные от выбросов с учетом тренда

data = DataCleaner(method='mean',      # Метод расчета центральной тенденции ('mean', 'median' или 'mode')
                   weeks=4,            # Количество недель для расчета скользящего среднего
                   window=365,         # Размер окна для скользящего среднего и стандартного отклонения
                   std=2,              # Количество стандартных отклонений для определения выбросов
                   tqdm=True,          # Флаг для использования индикатора прогресса tqdm
                   plot=False,         # Флаг для включения или отключения визуализации
                   num_plot=5,         # Количество объектов для визуализации
                   parallel=True).clean_data(data=data, column=['value', 'value2'], series_id='id')

📈 Прогнозирование

bk = BurgerKing(
    data=data,                       # Набор данных
    freq='D',                        # Частота временного ряда
    periods=180,                     # Количество периодов для прогнозирования
    target=['check_qnty', 'avg'],    # Целевые переменные для прогнозирования
    levels=['W', 'M'],               # Уровни для ресемплинга ('W' - еженедельно, 'M' - ежемесячно)
    agg=['mean', 'median'],          # Функции агрегации
    n_splits=5,                      # Количество разбиений для TimeSeriesSplit
    n_estimators=350,                # Количество итераций для бустинга в LightGBM
    early_stopping_rounds=150,       # Количество раундов для ранней остановки в LightGBM
    lgb_params={
        'objective': 'regression',
        'metric': 'mse',
        'learning_rate': 0.01,
        'num_leaves': 31,
        'verbose': -1
    },  # Параметры для LightGBM
    prophet_params={
        'yearly_seasonality': True,
        'weekly_seasonality': True,
        'daily_seasonality': False
    },  # Параметры для Prophet
    holidays_getter=None,             # Кастомный получатель праздников
    tqdm=True                         # Включить индикаторы прогресса tqdm
)

results_df = bk.run()

📊 Замеряем качество

wape(data, test)

📞 Контакты


README.md in English

shakhbanov_ml

ML tools for time series

Welcome to shakhbanov_ml - a toolkit for processing and analyzing time series. This package includes methods for gap filling, data cleaning, and forecasting, specifically designed to simplify working with time series data.


🚀 Installation

pip install shakhbanov

🔧 Usage

📥 Import Libraries and Load Data

import pandas as pd

from shakhbanov.metrics import wape
from shakhbanov.forecast import BurgerKing
from shakhbanov.cleaner import DataCleaner
from shakhbanov.kalman_gap_filler import KalmanGapFiller

data = pd.read_csv('timeseries.csv')

🔍 Fill Missing Periods using Kalman Filter

# Initialize KalmanGapFiller with parameters
data = KalmanGapFiller(date_column='ds',
                      group_column='id', 
                      target_columns=['value', 'value2'],
                      tqdm=True, 
                      parallel=True).process(data)

🧹 Clean Data from Outliers Considering Trend

data = DataCleaner(method='mean',      # Method for calculating central tendency ('mean', 'median' or 'mode')
                   weeks=4,            # Number of weeks for calculating the moving average
                   window=365,         # Window size for moving average and standard deviation
                   std=2,              # Number of standard deviations for identifying outliers
                   tqdm=True,          # Flag to use tqdm progress indicator
                   plot=False,         # Flag to enable or disable visualization
                   num_plot=5,         # Number of items to visualize
                   parallel=True       # Flag to use parallel processing
                ).clean_data(data=data, column=['value', 'value2'], series_id='id')

📈 Forecasting

bk = BurgerKing(
    data=data,                      # Dataset
    freq='D',                       # Frequency of the time series data
    periods=180,                    # Number of periods to forecast
    target=['check_qnty', 'avg'],   # Target variables to forecast
    levels=['W', 'M'],              # Levels for resampling ('W' for weekly, 'M' for monthly)
    agg=['mean', 'median'],         # Aggregation functions
    n_splits=5,                     # Number of splits for TimeSeriesSplit
    n_estimators=350,               # Number of boosting iterations for LightGBM
    early_stopping_rounds=150,      # Rounds of early stopping for LightGBM
    lgb_params={
        'objective': 'regression',
        'metric': 'mse',
        'learning_rate': 0.01,
        'num_leaves': 31,
        'verbose': -1
    },  # Parameters for LightGBM
    prophet_params={
        'yearly_seasonality': True,
        'weekly_seasonality': True,
        'daily_seasonality': False
    },  # Parameters for Prophet
    holidays_getter=None,           # Custom holidays getter
    tqdm=True                       # Enable tqdm progress bars
)

results_df = bk.run()

📊 Measure Quality

wape(data, test)

📞 Contacts

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shakhbanov-1.3.1.tar.gz (24.2 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page