Полный обзор того, как построить модель машинного обучения и развернуть ее с помощью Django REST API.
Введение
Давайте рассмотрим следующий сценарий: вы внедрили выдающуюся модель машинного обучения, которая предсказывает, страдает ли пациент палюдизмом или нет. Затем больницы в вашем городе захотят интегрировать вашу модель в свои системы для общего пользования. Но эти системы были разработаны на совершенно разных языках программирования. Означает ли это, что они больше не смогут использовать вашу модель? Ответ — «Нет», потому что с помощью служб RESTful ваша модель может быть доступна разработчикам приложений, независимо от того, какой язык программирования они используют.
Эта статья состоит из двух разделов:
- Создайте модель машинного обучения, которая предсказывает, есть ли у данного пациента диабет или нет.
- Пошаговое руководство по включению REST в вашу модель машинного обучения с помощью Django REST API.
Раздел 1: Построение модели
Цель состоит не в том, чтобы иметь причудливую модель, а в том, чтобы быстро получить модель и сериализовать ее, чтобы создать окончательный REST API.
На следующем изображении показано, как структурирован проект построения модели.
Предпосылки
Цель этого раздела — установить все библиотеки, необходимые для правильной реализации модели классификации.
1- Создайте и активируйте виртуальную среду
python3 -m venv mlAPIEnv # Create the environment source mlAPIEnv/bin/activate # Activate the environment
2- Установите pandas для чтения данных.
pip install pandas
3. Установите sklearn, чтобы импортировать модели машинного обучения.
pip install -U scikit-learn
4- Установите joblib, чтобы сериализовать окончательную модель.
pip install joblib
Содержимое каждого файла
После запуска следующей команды вы получите изображение ниже, показывающее: первые 7 строк, последние 7 строк и производительность модели из отчета о классификации.
cd src # move to the scr folder python3 run_training.py # Run the model training
Теперь вы должны найти новый файл diabete_detector_model.pkl в папке model.
Ваша модель машинного обучения готова. Теперь пришло время включить REST с помощью Django REST API.
Часть 2: Реализация API
Предпосылки
Цель этого раздела — установить все библиотеки, необходимые для правильной реализации REST API.
1- Установите Джанго
pip install django
2- Установите фреймворк Django REST
pip install djangorestframework
Проект Django и REST API
Все библиотеки установлены. Следующим шагом будет создание проекта Django и Django rest API.
1- Создайте свой проект Django из корневой папки проекта.
django-admin startproject diabete_deployment
Выполнение предыдущей инструкции создаст новую папку с именем diabete_deployment. Перейдите в эту папку и создайте свой API.
2- Создайте свою папку API
cd diabete_deployment # Move into the folder django-admin startapp diabete_api # Create your API folder
На изображении ниже мы можем наблюдать предыдущие дополнительные папки с соответствующими им файлами.
Для создания нашего API важны файлы settings.py, diabete_api/views.py,иdiabete_deployment/urls.py. Позднее нам нужно будет создать дополнительные файлы и папки.
- settings.py: используется для регистрации всех новых приложений/API, являющихся частью проекта. Эта новая информация регистрируется в переменной INSTALLED_APPS, как показано ниже (diabete_api и rest_framework).
Каждый раз, когда файл настроек обновляется, важно выполнять миграции, чтобы изменения распространялись на схему вашей базы данных. Убедитесь, что вы запускаете команду в папке diabete_deployment, где находится manage.py.
а- Запустите миграцию
python manage.py makemigrations
б- Перенести изменения
python manage.py migrate
Вот результат после запуска команды migrate
c- Запустите сервер, чтобы проверить, все ли работает правильно.
python manage.py runserver
Предыдущая команда генерирует следующую информацию для доступа к URL-адресу, ведущему к интерфейсу Django, что означает, что пока все работает правильно.
Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). November 29, 2021 - 03:47:18 Django version 3.2.9, using settings 'diabete_deployment.settings' Starting development server at http://127.0.0.1:8000/
- diabete_api/views.py: используется для реализации всех функций, которые будут запускаться при вызове определенного маршрута. В нашем случае реализация будет на функции предсказания. Нашей функции нужно будет загрузить модель, чтобы делать прогнозы. Для этого нам нужно создать новую папку static/model в основной папке diabete_deployment, которая будет содержать сериализованная модель .pkl.
- Создайте новый файл diabete_api/urls.pyсо следующим содержимым
- diabete_deployment/urls.py: используется для связывания всех URL-адресов с соответствующими функциями, реализованными в файле views.py.
Теперь, когда все важные файлы были обновлены и созданы новые, мы, наконец, готовы перезапустить URL-адрес и убедиться, что все работает нормально!
а- Запустить сервер
python manage.py runserver
Мы можем получить доступ к URL-адресу, сгенерированному предыдущей командной строкой.
System check identified no issues (0 silenced). November 29, 2021 - 16:23:24 Django version 3.2.9, using settings 'diabete_deployment.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
Это экран, который мы получаем, и он указывает на страницу index, отображающую информацию, указанную в функции index внутри файл представления.
На этой странице отображается сообщение HTTP 200 OK, означающее, что запрос страницы выполнен успешно.
На этой странице мы наконец можем вызвать функцию прогнозирования, добавив /predict к URL-адресу.
На предыдущей странице мы можем эмулировать прогноз, вставив следующие данные JSON в раздел содержимого.
На предыдущем изображении мы наблюдаем общее взаимодействие, от запроса до прогноза.
Протестируйте свой потрясающий API с помощью CURL
Вот синтаксис почтового запроса, который мы делаем
curl -d "param1=val1¶m2=val2...paramN=valN" [URL]/funct_to_call
- param1: первый параметр и val1 — соответствующее значение.
- param2: второй параметр и val2 — соответствующее значение.
- и т. д.
- URL: используемый URL-адрес, в нашем случае это http://127.0.0.1:8000.
- funct_to_call: функция для вызова запроса, в нашем случае это /predict
Суммируя все получаем следующий запрос:
curl -d 'pregnancies=6&glucose=148&bloodpressure=72&skinthickness=35&insulin=0&bmi=33.6&diabetespedigreefunction=0.627&age=50' http://127.0.0.1:8000/predict
Вот результат запроса:
{"info":"success","patient_status":1,"model_confidence_proba":63.36}
Конец статьи
Из этой статьи вы узнали, как построить модель машинного обучения и создать REST API с помощью Django. Теперь вы можете сделать свой API доступным больницам вашего города и спасать жизни 😃.
Дополнительные ресурсы
Тестирование REST API с помощью Postman и curl
Пока пока 🏃🏾