Feature Engineering! Как бы мы ни вздыхали при простом произнесении ужасной фразы, мы, как специалисты по обработке данных, проводим большую часть нашего времени, занимаясь этой деятельностью (как показано на рис. 1.1). Похоже, что большинство специалистов по данным считает эту часть своей рабочей нагрузки самой утомительной и наименее приятной.

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

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

Знаете ли вы, что в Python есть автоматизированные библиотеки, которые могут помочь в процессе разработки функций?

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

Featuretools

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

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

Несмотря на то, что добавлено более 50 столбцов, эти агрегации не влияют на исходный фрейм данных:

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

Feature-engine

Feature-engine - замечательная библиотека, которая имеет набор функций, которые помогут вам в таких вещах, как обработка недостающих данных, быстрое кодирование, ограничение выбросов, дискретизация и преобразование числовых переменных. Он очень хорошо сочетается с sci-kit learn, и после того, как вы разделите наборы данных для поезда и тестирования, вы можете применить преобразователи. Вы можете получить доступ к документации к этой библиотеке по этой ссылке.

Отсутствующие данные

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

Создайте переменную с одной из функций, определите свои параметры и используйте функцию .fit(), чтобы применить ее к вашему фрейму данных.

Ограничение выбросов

В Feature-Engine есть функция Winsorizer(), которая ограничивает максимальные или минимальные значения, используя межквартильные диапазоны. Чтобы настроить эту функцию, вы можете указать ей, из какого типа распределения вы хотите брать IQR, и указать, какую часть хвоста (при нормальном распределении) вы хотите ограничить.

Если вы хотите лично определить свои выбросы, вы можете использовать функцию ArbitraryOutlierCapper(). Эта функция позволяет передать словарь максимальных и минимальных параметров.

заключение

Разработка функций не всегда должна быть такой сложной задачей. С помощью таких библиотек, как featuretools и feature-engine, скучный процесс может стать немного более плавным и менее трудоемким.

Источники:

Https://feature-engine.readthedocs.io/en/latest/

Https://docs.featuretools.com/en/stable/index.html

Https://adtmag.com/articles/2016/03/25/data-science-report.aspx