Руководство для начинающих по обучению и развертыванию моделей машинного обучения с помощью Python

1656590050 rukovodstvo dlya nachinayushhih po obucheniyu i razvertyvaniyu modelej mashinnogo obucheniya

Иван Юнг

1*-W-ioBNBUF5eSDYWc-ZHxQ

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

Я открыл новую вкладку в Chrome и искал более простые решения. Я нашел API от Amazon, Microsoft и Google, которые сделали все машинное обучение за меня. Каждый проект хакатона, который я делал, вызывал их серверы, и WOW это выглядело так разумно! Я был подключен.

Но через год я понял, что ничего не учу. Все, что я делал, было описано комиксом Nedroid, который я изменил:

1*1YwLOx3wkKoLjRUD-NoiZA
Источник оригинального изображения.

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

Получение набора данных

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

В этой статье я использую набор данных о качестве вина с множеством функций и одной этикеткой. Особенности являются независимыми переменными, которые влияют на зависимую переменную, которая называется этикетке. В этом случае мы имеем один этикетке столбец – качество вина – на которое влияют все остальные столбцы (например, pH, плотность, кислотность и т.п.).

В следующем коде Python я использую библиотеку под названием pandas для управления набором данных. Pandas предоставляет наборы данных по многим функциям для выбора данных и управления ими.

Сначала я скачиваю набор данных в панду и разбиваю его на метку и ее функции. Затем я беру столбец метки под его названием (качество), а затем сбрасываю столбец, чтобы получить все функции.

1*Kybbe-8PK1jHttWyP0adow
Scikits-learn, библиотека, которую мы будем использовать для машинного обучения

Обучение модели

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

Я использую объект оценки библиотеки Scikit-learn для простого машинного обучения. Оценщики являются пустыми моделями, создающими связи с помощью предварительно определенного алгоритма.

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

Код для этой модели и поддельного вина приведен ниже:

Импорт и экспорт нашей модели Python

Библиотека pickle позволяет легко сериализировать модели в файлы, которые я создаю. Я также могу загрузить модель обратно в код. Это позволяет мне держать код обучения модели отдельно от кода, который разворачивает мою модель.

Я могу импортировать или экспортировать свою модель Python для использования в других сценариях Python с помощью кода ниже:

Создание простого веб-сервера

1*wv3umUu_u8r7dgeXHX38uw
Flask, фреймворк, который мы будем использовать для создания веб-сервера.

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

Фреймворк Flask Python позволяет мне создавать веб-серверы в рекордно короткие сроки.

В коде ниже я использую Flask для запуска простого веб-сервера с одним маршрутом. Мой единственный маршрут слушает запросы POST и посылает привет обратно. Запрос POST – это особый тип запроса, содержащий данные в объекте JSON.

Добавление модели на мой сервер

С помощью библиотеки pickle я могу скачать нашу обученную модель на свой веб-сервер.

Теперь наш сервер загружает обученную модель при ее инициализации. Я могу получить к нему доступ, отправив запрос на сообщение по моему маршруту «/echo». Маршрут захватывает массив функций из тела запроса и придает его модели. Прогноз модели затем посылается обратно запросчику.

Вывод

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

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

Удачи и счастливой кодировки!

Добавить комментарий

Ваш адрес email не будет опубликован.