Развертывание моделей машинного обучения является важным шагом на пути внедрения решений в области науки о данных и искусственного интеллекта в реальный мир. В этой статье мы рассмотрим, как создать Flask API для развертывания модели машинного обучения. Flask — это микровеб-фреймворк, написанный на Python, который идеально подходит для создания RESTful API. Мы будем использовать библиотеку scikit-learn для обучения модели линейной регрессии на наборе данных об автомобилях, а затем развернем модель с помощью Flask API.

Шаг 1. Подготовьте набор данных

Первым шагом является подготовка набора данных. В этом примере мы будем использовать набор данных cars из библиотеки seaborn. Мы удалим все недостающие значения и выберем соответствующие функции. Код для этого шага показан ниже.

import pandas as pd
from sklearn.linear_model import LinearRegression
import joblib

# Load the dataset
cars = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/Cars93_miss.csv')

# Remove missing values
cars = cars.dropna()

# Select features
X = cars[['MPG.city', 'EngineSize', 'Horsepower', 'RPM', 'Rev.per.mile', 'Fuel.tank.capacity', 'Length', 'Width', 'Turn.circle', 'Weight']]
y = cars['Price']

Шаг 2. Обучите и сохраните модель машинного обучения

Следующим шагом является обучение и сохранение модели машинного обучения. Мы будем использовать класс LinearRegression scikit-learn для создания модели линейной регрессии. Код для этого шага показан ниже.

# Train the model
model = LinearRegression()
model.fit(X, y)

# Save the model
joblib.dump(model, 'model.pkl')

Шаг 3: Создайте API Flask

Теперь, когда мы обучили модель машинного обучения, мы можем создать Flask API для ее развертывания. API Flask будет прослушивать HTTP-запросы и отвечать прогнозами модели машинного обучения. Мы сохраним и назовем этот скрипт API как deploy.py. Код для этого шага показан ниже.

from flask import Flask, request, jsonify
import joblib
import numpy as np

app = Flask(__name__)

# Load the model
model = joblib.load('model.pkl')

# Define the endpoint
@app.route('/predict', methods=['POST'])
def predict():
    # Get the data from the request
    data = request.get_json()

    # Transform the data into a numpy array
    X = np.array([data['MPG.city'], data['EngineSize'], data['Horsepower'], data['RPM'],
                  data['Rev.per.mile'], data['Fuel.tank.capacity'], data['Length'], data['Width'],
                  data['Turn.circle'], data['Weight']])

    # Make a prediction
    prediction = model.predict(X.reshape(1, -1))

    # Return the prediction as a JSON object
    response = {'prediction': float(prediction)}
    return jsonify(response)

if __name__ == '__main__':
    app.run(port=8000)

Приведенный выше код создает приложение Flask, которое прослушивает запросы POST к конечной точке /predict. Когда он получает запрос, он извлекает данные из запроса, преобразует их в массив numpy и передает в модель машинного обучения, чтобы сделать прогноз. Наконец, прогноз возвращается в виде объекта JSON.

Шаг 4. Протестируйте API Flask

Чтобы запустить файл deploy.py вашего Flask API в терминале, вы можете использовать следующую команду:

python deploy.py

Эта команда запустит ваше приложение Flask и будет доступно по URL-адресу https://localhost:8000.

Чтобы протестировать конечную точку /predict вашего API, вы можете использовать curl или библиотеку запросов в Python для отправки запроса POST с входными данными.

Используя curl, вы можете выполнить следующую команду в терминале:

curl -X POST -H "Content-Type: application/json" -d "{\"MPG.city\": 25, \"EngineSize\": 4, \"Horsepower\": 150, \"RPM\": 5500, \"Rev.per.mile\": 2150, \"Fuel.tank.capacity\": 16, \"Length\": 190, \"Width\": 67, \"Turn.circle\": 37, \"Weight\": 3053}" https://localhost:8000/predict

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

Развертывание моделей машинного обучения в виде API-интерфейсов может стать эффективным способом прогнозирования и интеграции с другими приложениями. С Flask легко начать создавать и обслуживать собственные модели машинного обучения.