Sktime: универсальный магазин для анализа временных рядов в Python

Введение

Sktime – это библиотека Python с открытым исходным кодом для анализа временных рядов. Он предоставляет унифицированный интерфейс для выполнения нескольких задач обучения временных рядов, включая прогнозирование, классификацию, регрессию, кластеризацию, аннотирование и уменьшение размерности. Sktime также предоставляет интерфейсы для связанных библиотек, таких как scikit-learn, statsmodels, tsfresh, PyOD и fbprophet.

Он разработан, чтобы быть простым в использовании, гибким и модульным. Он предлагает совместимые с scikit-learn интерфейсы и инструменты построения моделей с целью сделать экосистему анализа временных рядов более удобной и функциональной в целом. Sktime создается и поддерживается открытым, разнообразным и самоуправляемым сообществом.

Вот некоторые особенности:

  • Унифицированный интерфейс для задач обучения с несколькими временными рядами
  • Совместимые с Scikit-Learn интерфейсы
  • Инструменты композиции модели
  • Интерфейсы к связанным библиотекам
  • Простой в использовании, гибкий и модульный
  • Создано и поддерживается открытым, разнообразным и самоуправляемым сообществом

Для чего можно использовать Sktime?

  • Прогнозирование временных рядов: Sktime можно использовать для прогнозирования будущих значений данных временных рядов. Это может быть полезно для планирования, составления бюджета и других задач, связанных с принятием решений.
  • Классификация временных рядов. Sktime можно использовать для классификации данных временных рядов по различным категориям. Это может быть полезно для обнаружения мошенничества, медицинской диагностики и других приложений.
  • Регрессия временных рядов: Sktime можно использовать для прогнозирования значения переменной временного ряда на основе других переменных временного ряда. Это может быть полезно для финансового прогнозирования, предсказания погоды и других приложений.
  • Кластеризация временных рядов: Sktime можно использовать для кластеризации данных временных рядов в группы. Это может быть полезно для выявления закономерностей в данных и уменьшения размерности данных.
  • Аннотации временных рядов: Sktime можно использовать для аннотирования данных временных рядов с помощью меток или метаданных. Это может быть полезно для понимания смысла данных и для того, чтобы сделать их более доступными для других.
  • Уменьшение размерности: Sktime можно использовать для уменьшения размерности данных временных рядов. Это может быть полезно для упрощения визуализации данных и повышения производительности алгоритмов машинного обучения.

Примеры классификаторов, доступных в Sktime:

Sktime — мощный инструмент для анализа временных рядов. Он предоставляет исчерпывающий набор инструментов для широкого круга задач, прост в использовании и изучении. Если вас интересует анализ временных рядов, sktime — отличный ресурс. Он предоставляет множество классификаторов для данных временных рядов, в том числе:

  • Классификаторы на основе расстояния. Эти классификаторы используют показатели расстояния для сравнения временных рядов. Примеры включают эластичный ансамбль (EE), классификатор временных рядов KNN, лес близости, пень близости и дерево близости.
  • Классификаторы на основе интервалов. Эти классификаторы используют интервалы для представления временных рядов. Примеры включают лес временных рядов (TSF), спектральный ансамбль случайных интервалов (RISE), контролируемый лес временных рядов (STSF), канонический интервальный лес (CIF) и канонический интервальный лес с разнообразным представлением (DrCIF).
  • Классификаторы на основе словарей. Эти классификаторы используют словари для представления временных рядов. Примеры включают классификатор набора символов (BoS) и классификатор набора шаблонов (BoP).
  • Классификаторы глубокого обучения. Эти классификаторы используют модели глубокого обучения для представления временных рядов. Примеры включают классификатор сверточной нейронной сети (CNN) и классификатор рекуррентной нейронной сети (RNN).

Выбор классификатора зависит от конкретных данных временного ряда и желаемой точности. Классификаторы на основе расстояния, как правило, быстры и просты в обучении, но они могут быть не такими точными, как классификаторы на основе интервалов или словарей. Классификаторы на основе интервалов и словарей более точны, но их обучение может быть медленнее. Классификаторы глубокого обучения могут быть очень точными, но для их обучения может потребоваться большой объем данных.

Код Python для прогнозирования временных рядов

Чтобы начать работу со sktime, просто установите его с помощью pip:

pip install sktime

Затем перейдите в предпочтительную IDE и начните экспериментировать с мощной библиотекой. Вот пример использования алгоритма регрессии для решения задачи прогнозирования:

import numpy as np
from sktime.datasets import load_airline
from sktime.forecasting.compose import make_reduction
from sklearn.ensemble import RandomForestRegressor
from sktime.forecasting.model_selection import temporal_train_test_split
from sktime.performance_metrics.forecasting import MeanAbsolutePercentageError

y = load_airline()
y_train, y_test = temporal_train_test_split(y)

# forecasting horizon
fh = np.arange(1, len(y_test) + 1)  

regressor = RandomForestRegressor()
forecaster = make_reduction(
    regressor,
    strategy="recursive",
    window_length=12,
)

forecaster.fit(y_train)

y_pred = forecaster.predict(fh)

smape = MeanAbsolutePercentageError()
smape(y_test, y_pred)
>>> 0.1261192310833735

Это так просто! Так что не ждите никого. Прогноз прочь!

Документация sktime также очень обширна со всеми подробностями, предоставленными для каждой реализации различных доступных классификаторов. Ссылка дана ниже для ознакомления:
https://www.sktime.net/en/latest/api_reference/base.html

Поддержите меня, чтобы не пропустить другие интересные статьи по машинному обучению, подписавшись на Ильяса Ахмеда.

До следующего раза, удачных прогнозов.