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