Расширьте встроенную функциональность с помощью собственных инструментов предварительной обработки, совместимых с конвейером

Все мы знаем о важности предварительной обработки в проекте машинного обучения. Обычно имеет смысл обрабатывать некоторые недостающие значения, масштабировать различные функции, быстро кодировать другие и т. Д., А в scikit-learn есть готовые инструменты, которые отлично справляются со всеми этими шагами прямо из коробки. Но как насчет добавления новых функций или применения пользовательского преобразования? Знаете ли вы, что scikit-learn также позволяет легко встроить эти шаги в стандартный рабочий процесс конвейера? Вот как!

Функция Трансформатор

Давайте начнем с простого с отличного инструмента для преобразований на лету: FunctionTransformer. FunctionTransformer может использоваться для всего, от применения предопределенной функции к функции до выбора определенных столбцов в наборе функций. Основная идея состоит в том, что FunctionTransformer принимает функцию (вы также можете передать обратную функцию) и применяет функцию к данным с помощью метода fit_transform. Это делает его отличным инструментом для несложных преобразований, которые можно заключить в простую функцию; вы можете почти думать об этом как о лямбда-функции предварительной обработки scikit-learn. Ниже мы демонстрируем несколько вариантов использования.

Выбор функций:

Здесь мы используем FunctionTransformer, чтобы выбрать две из тринадцати функций в полном наборе данных Boston Housing.

Простые преобразования:

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

Полностью настраиваемые оценщики

Что, если вы хотите расширить эту базовую функциональность за счет более сложных преобразований? Разработать некоторые функции? Добавить несколько гиперпараметров, чтобы упростить поиск по сетке? Scikit-learn поможет вам и здесь, и у нас есть для вас пример ниже.

Прежде чем мы начнем, мы должны отметить, что хотя документация в целом является хорошей отправной точкой для любого пакета, scikit-learn особенно известен тем, что имеет исключительно хорошую документацию. Объекты Scikit-learn (оценщики, на языке sklearn) имеют некоторые общие соглашения, и рекомендуется следовать им, чтобы они хорошо взаимодействовали с другими концепциями стиля конвейера. С этой целью scikit-learn предоставляет несколько инструментов для простой реализации этих функций совместимым способом, и вы можете узнать больше о том, почему мы их используем, в приведенном ниже коде на этой странице.



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

И без лишних слов, вот код:

Получите доступ к экспертному обзору - Подпишитесь на DDI Intel