Построение сквозного конвейера машинного обучения с использованием scikit-learn
Попытка решить проблему машинного обучения, как правило, довольно повторяющаяся задача, когда речь идет о процессах, которым мы должны следовать. Вообще говоря, когда мы хотим решить проблему регрессии или классификации в табличных данных, мы делаем три шага:
- Читать данные из источника
- Предварительно обработайте данные различными способами
- Подача модели с предварительно обработанными данными
В этой статье я хочу показать начинающим специалистам по данным, как выполнять эти шаги более читабельным, понятным и простым способом, используя пайплайны 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, или как выполнить некоторую настройку гиперпараметров для компонентов внутри конвейера.
Если вам понравился этот пост, вы можете подписаться на меня и проверить другие мои посты: