Построение сквозного конвейера машинного обучения с использованием scikit-learn

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

  1. Читать данные из источника
  2. Предварительно обработайте данные различными способами
  3. Подача модели с предварительно обработанными данными

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

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

Допустим, у нас есть простой набор данных, такой как набор данных scikit-learn для вина. Начинающий специалист по данным, вероятно, сделал бы что-то вроде этого:

Если мы внимательно посмотрим на этот кусок кода, мы увидим много избыточного кода, потому что мы дважды применяем одни и те же преобразования. Однако этот код работает правильно, и мы получаем точность 97,77%.

Теперь мы воспроизведем приведенный выше код, используя конвейер scikit-learn. Но подождите, что такое конвейеры scikit-learn?

Конвейер scikit-learn — это компонент, предоставляемый пакетом scikit-learn, который позволяет нам объединять различные компоненты в API scikit-learn и запускать их последовательно. Это очень полезно, потому что после создания конвейера компонент выполняет всю предварительную обработку X_train и X_test и подгонку модели за нас, и это может помочь нам свести к минимуму человеческие ошибки в процессе преобразования данных и подгонки. Давайте посмотрим на пример:

Этот подход также обеспечивает точность 97,77%, но он гораздо более удобочитаем и удобен, чем другой фрагмент кода.

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

Заключение

Как вы видели выше, конвейеры scikit-learn — это очень мощный инструмент, о котором каждый специалист по данным должен помнить, прежде чем выполнять какие-либо шаги предварительной обработки. Тем не менее, эта статья лишь слегка затрагивает то, что вы можете делать с этим компонентом. Если вам интересно узнать больше о конвейерах, я могу написать еще одну статью в будущем, объясняющую, как создавать пользовательские функции предварительной обработки, которые можно вставить в конвейер scikit-learn, или как выполнить некоторую настройку гиперпараметров для компонентов внутри конвейера.

Если вам понравился этот пост, вы можете подписаться на меня и проверить другие мои посты: