Создание конвейера машинного обучения

Как кодировать категориальные функции с помощью Scikit-learn

Схема:

  • Почему вы должны использовать Pipeline?
  • Как вы кодируете категориальные функции с помощью OneHotEncoder?
  • Как вы применяете OneHotEncoder к выбранным столбцам с помощью ColumnTransformer?
  • Как построить и перекрестно проверить конвейер?
  • Как вы делаете прогнозы на основе новых данных с помощью Pipeline?
  • Почему вы должны использовать scikit-learn (а не pandas) для предварительной обработки?

Цель конвейера состоит в последовательном соединении шагов. Зачем строить трубопровод? Есть 2 основные причины

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

В следующем упражнении мы будем использовать набор данных Titanic для демонстрации иллюстрации.

Шаг 1. Загрузите набор данных

Чтобы быть кратким, мы бы выбрали 3 функции, которые будут использоваться, чтобы предсказать, выжил ли пассажир в крушении Титаника или нет. Как показано на рисунке ниже.

X Features = ['Pclass', 'Sex', 'Embarked']

Функция Y= ['Выжил']

Шаг 2. Выберите функции

Кроме того, мы исключим все строки, в которых отсутствует параметр embark, а затем

Затем мы начнем с перекрестной проверки модели, которая прогнозирует [Survived] с использованием [Pclass], а затем покажем вам, как использовать Pipeline, а также OneHotencoder и ColumnTransformer.

Цель состоит в том, чтобы построить базовую модель с перекрестной проверкой.

Шаг 3. Перекрестная проверка модели с одной функцией

Вот главный вопрос?

Как добавить в модель дополнительные функции и выполнить ее перекрестную проверку?

Ответ в основном - Pipeline.

Это приводит нас к следующему шагу, кодированию категориальных признаков, [Sex] и [Emabrked].

Шаг 4. Кодируйте категориальные функции

OneHotEncoding — это этап предварительной обработки. Мы хотим применить его к столбцам ['Sex'] и ['Embarked'], но не к ['Pclass'], потому что мы рассматриваем его как числовую переменную, а не категориальную переменную.

Это создает массив NumPy с двумя столбцами для столбца [Sex], как показано ниже, затем мы применяем тот же OneHotencoder для столбца [Embarked].

Затем мы переопределяем нашу матрицу функций X как 3 функции.

Шаг 5. Перекрестная проверка конвейера со всеми функциями

Использование ColumnTransformer для всех функций:

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

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

  • Он берет данные (column_trans) и преобразует столбцы, которые являются этапами предварительной обработки.
  • Затем он строит модель, которая представляет собой логистическую регрессию.
  • Мы передаем весь пайплайн на кросс-валидацию. Наша точность повысилась по сравнению с предыдущим. Это означает, что добавление этих функций улучшило модель.

Другими словами, мы проводим перекрестную проверку конвейера шагов, который включает предварительную обработку данных и построение модели. Другими словами, перекрестная оценка Val идет на 5-кратное разделение, а затем запускает конвейер. Перекрестная проверка предназначена для оценки модели, поэтому вы решаете, строите ли вы хорошую модель, а затем можете использовать ее для прогнозирования новых данных.

Шаг 6. Делайте прогнозы на основе «новых» данных

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

Pipe.fit похож на model.fit, за исключением того, что он выполняет предварительную обработку, а также подгонку модели.

Трубка. предсказать, как модель. предсказать, за исключением того, что он запускает предварительную обработку на X_new

Заключение/резюме

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

  • OneHotEncoder
  • КолонкаТрансформатор
  • Трубопровод

Вот вопрос?

Почему мы выбрали именно этот подход вместо get_dummies? Это лучше, потому что:

  • Вам не придется создавать гигантский фрейм данных. Вы заметите, что OneHotEncoder не влияет на наш фрейм данных. Наш фрейм данных остается 3 или 4 столбца
  • Когда приходят новые данные, вам не нужно использовать для них get_dummies. Это означает, что форма может быть искажена
  • Мы можем выполнить Gridsearch как с параметрами модели, так и с параметрами предварительной обработки.

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