Анализ временных рядов для машинного обучения и науки о данных

Данные временных рядов не всегда безупречны и могут иметь пробелы и отсутствующие значения в определенные дни. Если вы используете модели машинного обучения, в ваших данных не должно быть пробелов, а заполнение пропущенных значений является важным шагом в процессе очистки и анализа данных. В этой статье вы узнаете, как определить и устранить недостающие данные с помощью функции повторной выборки pandas. Этот метод может помочь вам эффективно обнаруживать и заполнять пробелы в ваших данных.

Исходные данные

Чтобы проиллюстрировать этот процесс, я создал ежедневные выборки данных временного ряда с намеренно введенными промежутками, охватывающими диапазон в 10 дней. Исходные данные выглядят так:

Метод повторной выборки

Метод, представленный во временном ряду, представляет собой «повторную выборку», которая помогает заполнить пробелы в данных. В дополнение к изменению частоты данных временных рядов повторная выборка также может быть полезна для обнаружения и заполнения пробелов в данных. Вызывая функцию повторной выборки для исходных данных с той же частотой, мы можем определить любые пробелы в данных временного ряда. Затем мы можем использовать интерполяцию или другие методы, чтобы заполнить пропущенные значения и создать полный временной ряд. Это может быть особенно полезно при анализе данных с неравномерно расположенными или отсутствующими наблюдениями, поскольку позволяет оценить отсутствующие значения и предоставить более полную и точную картину данных. Например, при работе с набором данных с отсутствующими значениями в некоторые дни применение функции повторной выборки будет помечать эти пробелы как значения NA.

df_time_ser = df.resample('1D').mean()
df_time_ser

Выход:

Мы можем построить эти данные, чтобы визуализировать заполнение пробелов.

plot_ts_data(df_time_ser)

Как показано в приведенном выше примере, метод повторной выборки вводит значения NaN для дней, отсутствующих в исходном наборе данных. Эта операция расширяет наш фрейм данных, тем самым выявляя пробелы, которые необходимо устранить. Следующим шагом является замена этих значений NaN фактическими числами, что может быть достигнуто несколькими способами.

Вот, ниже примеры с питоном

Resample-Forward Fill

Один из подходов к устранению отсутствующих данных заключается в применении метода прямого заполнения, который включает использование значения, непосредственно предшествующего пропуску, для заполнения отсутствующего значения. Например, в нашем примере данных, где отсутствуют данные со 2-го по 4-й дни, метод прямого заполнения заполнит эти пробелы значением с 1-го дня (1,0).

df_time_ffill = df.resample('1D').mean().ffill()
df_time_ffill

Выход:

Мы можем построить эти данные, чтобы визуализировать заполнение пробелов.

plot_ts_data(df_time_ffill)



Повторная выборка — обратная заливка

Другим методом заполнения пропущенных значений является метод обратного заполнения. Как следует из названия, этот метод использует значение после промежутка, чтобы заполнить недостающие точки данных. В отличие от прямого заполнения, где дни со 2-го по 4-й заполняются значением 1,0 с 1-го дня, обратное заполнение принимает значение 2,0 с 5 октября, как показано в примере ниже.

df_time_bfill = df.resample('1D').mean().bfill()
df_time_bfill

Выход:

Мы можем построить эти данные, чтобы визуализировать заполнение пробелов.

plot_ts_data(df_time_bfill)

Передискретизировать — Интерполировать

Последний метод, описанный в этой статье, — это метод интерполяции, который соответствует точкам данных между двумя известными значениями. На диаграммах ниже вы можете наблюдать, как интерполяция сглаживает линии, соединяющие отсутствующие точки данных.

df_time_interpolate = df.resample('1D').mean().interpolate()
df_time_interpolate

Выход:

Мы можем построить эти данные, чтобы визуализировать заполнение пробелов.

plot_ts_data(df_time_interpolate)

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

Решения показаны ниже.

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

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

Эти две цели могут пересекаться. Например, если частота прогнозирования ежемесячная, а данные доступны только с ежедневной периодичностью, данные могут быть уменьшены до ежемесячной частоты для моделирования. Кроме того, проектирование признаков может включать использование наблюдений и сводок по обеим временным шкалам для разработки модели.

Заключение

Выявление и заполнение пробелов в данных временных рядов является важным аспектом подготовки и очистки данных перед построением модели машинного обучения. Для этой цели доступно несколько методов, и один из простых способов определить и заполнить недостающие точки данных — использовать функцию повторной выборки в pandas. Правильная обработка отсутствующих точек данных может привести к более точной и надежной модели машинного обучения.

Надеюсь, вам понравилась статья. Свяжитесь со мной на моих LinkedIn и twitter.

Рекомендуемые статьи

  1. Наиболее используемые методы NumPy с Python
    2. NumPy: линейная алгебра изображений
    3. Концепции обработки исключений в Python
    4. Pandas: работа с категориальными данными< br /> 5. Гиперпараметры: RandomSeachCV и GridSearchCV в машинном обучении
    6. Полное объяснение линейной регрессии с Python
    7. Полное объяснение логистической регрессии с Python
    8 , Распределение данных с помощью Numpy с Python
    9. 40 самых безумно используемых методов в Python
    10. 20 самых полезных методов быстрого доступа Pandas в Python