Найти тему
Властелин машин

Функциональный трансформер, как создавать и когда использовать

Оглавление

Функциональная трансформация поможет быстро создать преобразование колонок для пайплайна без сохранения состояния (создание других описывал здесь). Эта возможность реализована в классе FunctionTransformer из модуля sklearn.preprocessing. Например, это могут быть преобразования для создания цикличных признаков (из месяца, часа как здесь) или для извлечения слов из текста, его длины или других характеристик. Создадим демонстрационный набор из температур по месяцам и сделаем из месяца цикличный признак с помощью функционального трансформера:

func

Основным аргументом необходимым классу FunctionTransformer является пользовательская функция:

-2

Теперь с помощью ColumnTransformer проверим работу трансформеров:

-3

inverse_func

В FunctionTransformer можно передавать функцию обратного преобразования. В нашем случае оно неоднозначно (arcsin), но в демонстрационных целях приведем пример:

-4

check_inverse

Выше вылетает предупреждение о том, что переданные функции не являются строго обратными. Сообщение можно приглушить с параметром check_inverse=False:

-5

feature_names_out

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

-6

feature_names_out='one-to-one' позволит сохранить имена после преобразований:

-7

Можно изменить именование, если передать в параметр feature_names_out функцию, которая получает в качестве параметров ссылку на объект FunctionTransformer и старые имена, а возвращает новые имена:

-8

kw_args, inv_kw_args

Эти параметры позволяют передать словарь аргументов в функции func и inverse_func. Переделаем cos_transformer, определенный выше:

-9

-10