Перейти к содержимому

Подготовка данных

В DataFrame данные могут быть удобны для человека: строки, столбцы, названия городов, отделов, товаров, пустые ячейки, даты, логические значения. Но большинство моделей машинного обучения работает не с такой “сырой” таблицей, а с числовыми признаками.

Например, в таблице может быть столбец Отдел со значениями IT, Продажи, HR. Для человека это понятно, но модель ожидает числа. В другом столбце может быть пропуск: неизвестный возраст, пустая зарплата или не указанная категория. С такими значениями модель тоже обычно не может работать напрямую.

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

Упрощённо процесс выглядит так:

DataFrame -> подготовка признаков -> Matrix -> модель

На этапе подготовки данных:

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

Обработка пропусков показывает, как использовать Imputer, чтобы заменить пустые значения средним, медианой или константой.

Кодирование категорий объясняет, как преобразовать строковые категории в числа с помощью OrdinalEncoder и OneHotEncoder.

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

Важно различать два уровня:

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

Например, Imputer, OrdinalEncoder и OneHotEncoder работают с таблицей:

df := imputer.FitTransform(df);
df := encoder.FitTransform(df);

А StandardScaler применяется к матрице признаков:

var X := df.ToMatrix(['Возраст', 'Зарплата', 'Отдел']);
var Xscaled := scaler.FitTransform(X);

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