Перейти к содержанию

Преобразование данных на платформе SMILE

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

Модель "DataframeRename"

Модель предназначена для переименования столбцов в наборе данных.

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

Модель "DataframeMath"

Модель позволяет преобразовывать данные используя математические операции, как одного столбца, так и нескольких столбцов.

Модель "DataframeMath" имеет следующие параметры:

  • select_columns_by - принцип выбора столбцов для производимого действия:
    • custom - логика определения столбцов зависит от параметра "expression";
    • name - выбор столбцов по названию из текущего списка. При выборе данного столбца необходимо будет заполнить параметр "column_names", в котором будут указаны столбцы для преобразования;
    • type - выбор столбцов в зависимости от типа данных. При выборе данного столбца необходимо будет заполнить параметр "column_types", в котором будут указаны типы данных в столбцах для преобразования;
  • return_col_name - название возвращаемых после преобразования столбцов;
  • expression - произвольное пользовательское выражение по правилам синтаксиса "Pandas"

Пример нормализации значений

На примере набора данных Titanic - Machine learning from disaster рассмотрим нормализацию данных.

Необходимо нормализовать значения столбца Age в ручном режиме с помощью параметра expression.

Для обращения к конкретному столбцу будем использовать следующее выражение:${Название столбца}

Для данного необходимо заполнить параметры модели DataframeMath следующим образом:

  • select_columns_by - CUSTOM;
  • return_col_name - age_normalized;
  • expression - (${Age}-${Age}.min())/(${Age}.max)()-${Age}.min())

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

Пример логарифмического преобразования нескольких признаков

На примере набора данных Titanic - Machine learning from disaster рассмотрим логарифмическое преобразование на примере выбора столбцов по названию.

Для данного необходимо заполнить параметры модели DataframeMath следующим образом:

  • select_columns_by - NAME;
    • column_names - выбрать столбцы вручную, значения которых необходимо прологарифмировать;
  • return_col_name - _sin;
  • expression - np.sin(${__serial__})

В данном случае вместо конкретного столбца, требуется ввести обращение __serial__ для применения логарифмического преобразования ко всем столбцам выбранного типа данных

Пример изменения признаков одного типа данных

На примере набора данных Titanic - Machine learning from disaster рассмотрим преобразование данных вещественного типа в целочисленный.

Вещественный тип данных представляет собой числа в виде десятичной дроби, а целочисленные представляют собой числа без дробной части

Для данного преобразования необходимо заполнить параметры модели DataframeMath следующим образом:

  • select_columns_by - TYPE;
    • column_types - float (вещественный тип данных);
  • return_col_name - to_int;
  • expression - ${__serial__}.astype(int)

Пример сортировки данных по индексу или значению

На примере набора данных Titanic - Machine learning from disaster рассмотрим сортировку данных.

Для единовременного обращения к целому набору данных используется оператор __df

Применение сортировки возвращает в наборе данных все столбцы с постфиксом _transformed, поэтому параметр return_col_name игнорируется

Для сортировки набора данных по индексу необходимо заполнить параметры модели DataframeMath следующим образом:

  • select_columns_by - CUSTOM;
  • expression - ${__df}.sort_index()

Для сортировки набора данных по значениям столбца необходимо заполнить параметры модели DataframeMath следующим образом:

  • select_columns_by - CUSTOM;
  • expression - ${__df}.sort_values(['Age'])

Модель "DataframeFilter"

Модель предназначается для фильтрации данных по отдельным столбцам или индексу.

Модель "DataframeFilter" имеет следующие параметры:

  • column - выбор столбца, значения которого будут сравниваться для фильтрации
  • condition - условия сравнений, представленные в виде набора математических операторов
  • column_to - столбец, с которым происходит сравнение, по умолчанию заполняется значением "empty", что подразумевает сравнение с значением параметра "value"
  • value - значение для сравнения с условием, которое не относится непосредственно к набору данных
  • expression - произвольное пользовательское выражение по правилам синтаксиса "Pandas", при его заполнении остальные параметры будут проигнорированы
  • reset_index - сброс индекса после фильтрации

Пример фильтрации по условию

На примере набора данных Titanic - Machine learning from disaster рассмотрим фильтрацию данных пользователей по возрасту.

Необходимо отфильтровать данные людей, возраст которых больше 35 лет.

Для данного преобразования необходимо заполнить параметры модели следующим образом:

  • column - Age;
  • condition - >;
  • column_to - empty;
  • value - 35;
  • reset_index - false;

Пример фильтрации с помощью выражения

На примере набора данных Titanic - Machine learning from disaster рассмотрим фильтрацию данных пользовательским выражением.

Необходимо отфильтровать данные людей, возраст которых больше 35 лет и пол женский.

Для данного преобразования необходимо заполнить параметр expression модели следующим образом:

  • expression - (${Age}>35)&(${Gender}=='Female')

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

Модель возвращает отфильтрованный набор данных с идентичными названиями столбцов.

Модель "DataframeGroupBy"

Модель предназначается для группировки данных внутри одного из наборов.

Модель "DataframeGroupBy" имеет следующие параметры:

  • group-by - выбор столбцов для группировки;
  • as-index - установление выбранного столбца в параметре "group_by" в качестве индекса выходного набора данных. В случае выбора столбца группировки, как индекса, доступ обращения к нему напрямую в выходном наборе данных исчезнет;

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

  • operation-count - выбор столбцов для подсчета количества значений;
  • operation-min - выбор столбцов для отображения минимального значения;
  • operation-max - выбор столбцов для отображения максимального значения;
  • operation-sum - выбор столбцов для отображения суммы значений;
  • operation-first- выбор столбцов для отображения первого значения;
  • operation-last - выбор столбцов для отображения последнего значения;
  • operation-mean - выбор столбцов для отображения среднего значения;
  • operation-median- выбор столбцов для отображения медианного значения;
  • operation-std - выбор столбцов для отображения стандартного отклонения значений в столбце;

Пример группировки данных

На примере набора данных Titanic - Machine learning from disaster рассмотрим группировку данных.

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

  • подсчет количества значений в столбце возраст;
  • максимальный возраст;
  • минимальный возраст;

Для данного преобразования необходимо заполнить параметры модели следующим образом:

  • group-by - Gender;
  • as-index - false;
  • operation-count - Age;
  • operation-max - Age;
  • operation-min - Age;

Модель "DataframeGroupByDate"

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

Модель "DataframeGroupByDate" имеет следующие параметры:

  • group-by - выбор столбца дат для группировки;
  • freq - частота группировки:
    • Millisecond - по миллисекундам
    • Second - по секундам
    • Minute - по минутам
    • Day - по дням
    • Week - по неделям
    • Month - по месяцам
    • Year - по годам
  • freq_num - частота группировки внутри "freq", то есть при параметре freq_num=1 и freq='Year' - группировка будет по годам (за каждый год), а при freq_num=2 и freq='Year' - группировка будет по годам с шагом в 2 года (например 2014, 2016 и 2018);
  • convention - параметр, отвечающий за группировку значений в начале или в конце временного промежутка "freq";
    • Start - в начале
    • End - в конце
  • as-index - установление выбранного столбца в параметре "group_by" в качестве индекса выходного набора данных. В случае выбора столбца группировки, как индекса, доступ обращения к нему напрямую в выходном наборе данных исчезнет;

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

  • operation-count - выбор столбцов для подсчета количества значений;
  • operation-min - выбор столбцов для отображения минимального значения;
  • operation-max - выбор столбцов для отображения максимального значения;
  • operation-sum - выбор столбцов для отображения суммы значений;
  • operation-first- выбор столбцов для отображения первого значения;
  • operation-last - выбор столбцов для отображения последнего значения;
  • operation-mean - выбор столбцов для отображения среднего значения;
  • operation-median- выбор столбцов для отображения медианного значения;
  • operation-std - выбор столбцов для отображения стандартного отклонения значений в столбце;

Пример группировки данных

На примере набора данных Retail Data Analytics рассмотрим группировку данных по датам.
image info

Необходимо сгруппировать данные по годам и отобразить максимальную температуру за год и среднюю стоимость топлива

Для данного преобразования необходимо заполнить параметры модели следующим образом:

  • group-by - Date;
  • freq - Year;
  • freq_num - 1;
  • convention - End;
  • as-index - True;
  • operation-max - Temperature;
  • operation-mean - Fuel_price;

На выходе получаем следующие данные:
image info

Модель "DataframeReplace"

Модель предназначается для замены конкретных значений в наборе данных на пользовательские.

Модель "DataframeReplace" имеет следующие параметры:

  • columns - столбцы, в которых необходимо заменить значения;
  • to_replace - значения, которые необходимо заменить. Несколько значений могут введены последовательно через знак запятой ,;
  • result - пользовательское значение, на которое нужно заменить исходные данные;

После применения модели к набору данных, преобразованные столбцы будут помечены постфиксом _transformed

Пример замены числовых значений

На примере набора данных Titanic - Machine learning from disaster рассмотрим замену значений в наборе данных.

Необходимо в столбце Pclass заменить значения "1", "2", "3" на значение 0.

Для данного преобразования необходимо заполнить параметры модели следующим образом:

  • columns - PClass;
  • to_replace - 1,2,3;
  • result - 0;

Пример замены значений в строках

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

Для данного преобразования необходимо заполнить параметры модели следующим образом:

  • columns - titul;
  • to_replace - Capt, Col, Don, Dr, Jonkheer, Major;
  • result - Other;

Модель "DataframeMerge"

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

Модель DataframeMerge имеет следующие параметры:

  • left_on - столбцы для слияния из таблицы "слева", соответствующие столбцам из "правой" таблицы;
  • right_on - столбцы для слияния из таблицы "справа", соответствующие столбцам из "левой" таблицы;
  • left_index - слияние по индексу из таблицы "слева";
  • right_index - слияние по индексу из таблицы "справа";
  • on - выбор столбца, находящегося в "левой" и "правой" таблице для слияния по нему;
  • how - выбор способа слияния таблиц
    • left - сохраняет все значения из "левой" таблицы и подставляет пересекающиеся значения из "правой" таблицы. В случае, когда пересекающиеся значения отсутствуют и в "правой" таблице, они заполняются пустыми Nan значениями.
    • right - сохраняет все значения из "правой" таблицы и подставляет пересекающиеся значения из "левой" таблицы. В случае, когда пересекающиеся значения отсутствуют и в "левой" таблице, они заполняются пустыми Nan значениями.
    • outer - объединение всех значений;
    • inner - объединение значений, которые присутствуют в обеих таблицах;
    • cross - декартовое произведение "левой" и "правой" таблиц;
  • left_suffix - постфикс, добавляемый к столбцам выходного набора данных, взятых из "левой" таблицы;
  • right_suffix - постфикс, добавляемый к столбцам выходного набора данных, взятых из "правой" таблицы;

Пример слияния таблиц

На примере набора данных "О ценах на фрукты" рассмотрим слияние двух наборов данных.

Необходимо объединить данные из файлов apple_renamed и apricot_renamed по столбцам price_max и price_min

Для данного преобразования необходимо заполнить параметры модели следующим образом:

  • on - apple_price_max, apple_price_min, apricot_price_max, apricot_price_min;
  • how - outer;

В случае совпадения столбцов в наборах данных можно использовать параметры left_on и right_on

Модель "DataframeConcat"

Модель предназначена для объединения наборов данных между собой по строкам в один конечный набор данных.

Модель "DataframeConcat" имеет следующие параметры:

  • reset_index - сброс индекса у выходного набора данных;
  • axis - выбор оси для объединения:
    • index - вертикальная ось, строки будут добавлены в текущий набор данных;
    • columns - горизонтальная ось, строки будут добавлены, аналогично модели DataframeMerge
  • join - выбор способа объединения:
    • inner - объединение строк, пересекающихся столбцов;
    • outer - объединение всех строк, с заполнением отсутствующих значений пустыми;
  • ignore_index - игнор индекса;
  • sort_index - сортировка по индексу после объединения наборов данных;

Пример конкатинации таблиц

На примере набора данных "О ценах на фрукты" рассмотрим конкатинацию таблиц.

Необходимо соединить строки таблицы apple и apricot со сбросом индекса.

Для данного преобразования необходимо заполнить параметры модели следующим образом:

  • reset_index - true;
  • axis - index;
  • join - inner;
  • ignore_index - false;
  • sort_index - false;

Модель "DataframeReset"

Модель предназначена для сброса индексов набора данных.

  • axis - направление сброса данных:
    • index - сброс по вертикали (индексов);
    • columns - сброс по горизонтали (названия столбцов);
  • drop - сброс индекса у выходного набора данных;

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

Модель "DropByNone"

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

Модель "DropByNone" имеет следующие параметры:

  • columns - выбор столбцов, в которых проводится поиск пустых значений для дальнейшего удаления строк;

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

Пример удаления пустых значений

На примере набора данных Titanic - Machine learning from disaster рассмотрим удаление строк с пустыми значениями.

Необходимо удалить строки, которые содержат пропуски в столбцах Age, Cabin, Embarked

Для данного преобразования необходимо заполнить параметры модели следующим образом:

  • columns - Age, Cabin, Embarked;

Модель "DropByValue"

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

Модель "DropByValue" имеет следующие параметры:

  • columns - выбор столбцов, в которых проводится поиск пользовательских значений для дальнейшего удаления строк;
  • value - значения для поиска в столбцах, несколько значений можно ввести через ,;

Пример удаления конкретных значений

На примере набора данных Titanic - Machine learning from disaster рассмотрим удаление строк с конкретными значениями.

Необходимо удалить строки, которые содержат значения male, female.

Для данного преобразования необходимо заполнить параметры модели следующим образом:

  • columns - All, все столбцы набора данных;
  • value - male, female;

При этом в данном случае будут удалены все столбцы, поэтому выходного набора данных не будет существовать