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

Мотивация

Большинство людей согласны с тем, что Python — не лучший язык. Однако нет таких зрелых и надежных пакетов, как scikit-learn и TensorFlow, как в python. Я знаю, что многие люди ненавидят Python, но он выполняет свою работу и широко используется учеными, занимающимися данными. Когда у вас есть надежное приложение, которому нужны модели машинного обучения в его основе, REST API пригодится в этой ситуации. После того, как вы очистите данные и, наконец, создадите окончательную версию своей модели, следующим шагом будет создание API, который будет обслуживать вашу модель для остальной части приложения. Лучшей практикой будет поместить вашу модель в контейнер Docker, если это небольшая модель, но это выходит за рамки данного руководства.

Построение модели

Сначала я хотел построить пример модели с помощью scikit-learn, но, поразмыслив, пришел к выводу, что для этого примера лучше подойдет TensorFlow. Полную регрессионную модель с использованием нейросети я взял с официального сайта TensorFlow. Для этой части вам понадобится python3 и следующие пакеты python

$ python3 -m pip install pandas numpy tensorflow

Кратко расскажу о модели. В этой части мы извлекаем данные и сохраняем их в pandas DataFrame. Затем мы отбрасываем NaN, классифицируем города и разделяем данные.

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

Что следующее? Итак, мы собираемся построить простую нейронную сеть, но в начале нам нужно использовать нормализатор.

Резюме показывает нам следующее; модель довольно маленькая

Model: “sequential”
_________________________________________________________________
Layer (type) Output Shape Param # 
=================================================================
normalization (Normalization (None, 9) 19 
_________________________________________________________________
dense (Dense) (None, 64) 640 
_________________________________________________________________
dense_1 (Dense) (None, 64) 4160 
_________________________________________________________________
dense_2 (Dense) (None, 1) 65 
=================================================================
Total params: 4,884
Trainable params: 4,865
Non-trainable params: 19

История тренировок выглядит хорошо

Теперь давайте перейдем к части API.

Настройка фляжного приложения

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

$ python3 -m pip install flask

Создайте файл «app.py» со следующим содержимым

Мы собираем все вместе в одну деталь, что не является хорошей практикой в ​​производстве. Лучшей настройкой было бы обучить модель отдельно и сохранить ее в файле .h5. Затем загрузите его в глобальный кеш словаря и используйте его в нашем фляжном приложении. Тем не менее, это хорошо для простоты. Запустите приложение командой

$ python3 app.py

В конце мы протестируем наш API со следующим файлом «client.py».

Запустив этот файл, мы получим следующий вывод

$ python3 client.py 
{‘prediction’: ‘16.12621’}
{‘prediction’: ‘11.015069’}
{‘prediction’: ‘10.704992’}
{‘prediction’: ‘24.533926’}
{‘prediction’: ‘21.007578’}

Я надеюсь, что это руководство помогло вам. Если у вас есть какие-либо предложения, пожалуйста, оставьте их в комментариях ниже.