Манипулирование и очистка данных с помощью Python: Подготовка к проектам по машинному обучению

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

Фактически, основная часть любого проекта, основанного на науке о данных, в первую очередь требует эффективной очистки и манипулирования данными.

Что такое манипулирование/очистка данных?

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

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

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

Почему манипулирование/очистка данных важны для специалистов по исследованию данных?

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

Одним словом, очистка данных не менее важна, чем создание самих алгоритмов. Если вы освоите очистку данных, то сможете рассчитывать на следующее:

  • Сокращение времени обработки данных
  • Более точные прогнозы
  • Упрощение функциональности алгоритмов
  • Повышение эффективности обучения моделей

Почему именно Python?

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

6 шагов по манипулированию и очистке данных с помощью Python:

  • #1: Реализация вменения отсутствующих значений - Это стандартная статистическая вмененная константа, использующая KNN-импутацию.

Обнаружение выбросов/аномалий осуществляется с использованием: Isolation Forest, One Class SVM, Local Outlier Factor, и/или алгоритмов обнаружения аномалий.

  • #2: Проведение детектирования выбросов/аномалий - для этого можно использовать алгоритмы детектирования выбросов Isolation Forest, One-Class SVM и/или Local Outlier Factor.
  • #3: Использование методов очистки семейства X-переменных - в данном случае необходимо применить пользовательские функции, удалить дубликаты, а также заменить критические значения.
  • #4: Использование методов очистки семейства Y-переменных - здесь важно выполнить кодирование меток, одноточечное кодирование, а также отображение словарей.
  • #5: "Кадры данных" должны быть объединены - этот шаг включает конкатенацию, объединение и стыковку.
  • #6: Последний этап - "разбор дат" - здесь необходимо использовать строки, определяющие автоформат, для выполнения преобразования 'DateTime', включая изменение объектов 'DateTime' в числа.

Рассмотрим подробнее каждый шаг.

Первое: Внесение пропущенных значений

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

  • Простые методы вменения, такие как mean, median, mode, могут быть использованы для заполнения отсутствующих значений (NaN) статистической мерой каждого столбца. Параметр может быть заменен на 'mean', 'median', 'most_frequent' или mode, либо на 'constant', что является значением, задаваемым вручную.
  • KNN Imputing - более сложный метод вменения пропущенных значений. Алгоритм KNN используется для поиска различных точек данных, подобных отсутствующим значениям в наборе данных.

Важно отметить, что для использования KNN-импутации данные должны быть нормализованы для устранения различий в масштабе. Для использования KNN-импутации необходимо:

  • Нормализовать данные
  • Выполнить KNN-импутацию для восполнения недостающих значений
  • Обратное масштабирование/нормализация данных

Второе: Обнаружение выбросов и аномалий

  • Isolation Forest - это алгоритм, используемый для получения оценки аномальности наборов данных. Алгоритм выбирает признак и изолирует наблюдения путем случайного выбора значения разбиения. Затем создаются пути, представляющие нормальность значения. Чем короче путь, тем больше аномалий. Деревья" из более коротких путей для этих выборок образуют "лес", в котором с большой вероятностью можно обнаружить аномалии.
  • Одноклассовая SVM - еще один метод поиска выбросов. Он подходит для случаев, когда "лес изоляции" не может быть применен из-за чрезмерной дисперсии.
  • Local Outlier Factor - третий метод, используемый для обнаружения аномалий. Коэффициент локального выброса измеряет отклонение плотности в каждом наборе данных по сравнению с другими. Образцы, плотность которых ниже, чем у их соседей, скорее всего, являются выбросами. Этот алгоритм основан на расстоянии, поэтому перед его использованием необходимо нормализовать данные. Данный метод является альтернативой Isolation Forest с высокой дисперсией.

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

ТРЕТЬЕ: Методы очистки с использованием Х-переменных

  • Применение таможенных функций необходимо в тех случаях, когда очистка не может быть выполнена с помощью встроенных функций. В этом случае может потребоваться написание собственных функций, но сначала можно попробовать использовать внешние встроенные функции.
  • Удаление дубликатов является важной частью очистки данных. Это можно сделать с помощью функции data.drop_duplicates(), которая удаляет строки с одинаковыми значениями. Необходимо тщательно проверять, не являются ли дубликаты строк ошибками, особенно в небольших наборах данных.
  • Выборка точек данных важна для больших наборов данных. Для выборки случайных точек данных используется команда data.sample(number_of_samples).
  • Переименование столбцов выполняется с помощью команды .rename, где ключ - это исходное имя столбца, а значение - переименованное значение.
  • Замена значений производится с помощью функции data,replace(), которая берет из фрейма два значения, которые заменяются другими значениями. Это полезно для вменения недостающих значений, чтобы алгоритмы вменения могли эффективно работать.

ЧЕТВЕРТОЕ: Методы очистки Y-переменных

  • Кодирование меток необходимо для категориальных y-переменных. Если данные имеют два класса, то их необходимо преобразовать в 0 и 1, поскольку алгоритмы машинного обучения могут оперировать только математическими символами. Для этого можно использовать функцию .map(), которая преобразует словарь или исходные имена и заменяет значения на числа. Если классов слишком много для ручного сопоставления, можно воспользоваться автоматизированным методом sklearn. Этот метод удобен тем, что данные можно легко вернуть к исходному формату с помощью encoder.inverse_transform(array).
  • Одноточечное кодирование может быть предпочтительным в особых случаях, когда у вас много классов и вы не хотите накладывать на данные количественные оценки. При одноточечном кодировании каждое значение y представляет собой вектор, длина которого равна номеру каждого класса, причем "1" обозначает индекс внутри вектора, а остальные значения обозначаются "0". В Pandas имеется встроенная функция get_dummies, которая может автоматически принимать формы и выводить кадры данных в одноточечной кодировке.

ПЯТОЕ: Объединение фреймов данных

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

ШЕСТОЕ: Разбор дат

  • Даты могут быть очень сложными наборами данных, но при этом являются одними из самых важных. Поэтому так важно понимать, как правильно работать с этим типом данных
  • Автоматическое определение формата и преобразование строк в даты - важнейший навык, поскольку наборы данных редко поставляются с объектами дат, к которым можно легко получить доступ. Для автоматического определения местоположения дней, месяцев и лет можно использовать программу dateutil.
  • Преобразование дат в числа необходимо для того, чтобы модели могли понимать концепцию времени. Объекты времени даты преобразуются в числа. Другими словами, каждая дата представляет собой количество дней, прошедших с самой ранней даты в вашем наборе данных. Функция применяется к столбцу даты с помощью функции .apply()

Заключение

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