API Python com Flask: Machine Learning

Criar uma API é uma ótima maneira de disponibilizar seu modelo de Machine Learning para ser usado por diferentes aplicações. Neste artigo, vamos explorar como criar uma API simples usando Flask para servir um modelo de Machine Learning.

1. Introdução

Flask é um micro framework de web para Python, ideal para criar APIs leves e rápidas. Vamos criar uma API que servirá um modelo de Machine Learning, especificamente um classificador treinado no conjunto de dados Iris.

Bibliotecas Necessárias

Certifique-se de ter as bibliotecas necessárias instaladas:

pip install flask scikit-learn pandas

2. Treinamento do Modelo de Machine Learning

Vamos treinar um modelo de classificação utilizando o K-Nearest Neighbors (KNN) no conjunto de dados Iris e salvar o modelo treinado para uso posterior.

import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
import joblib

# Carregando o conjunto de dados Iris
iris = load_iris()
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
df['species'] = iris.target

# Dividindo os dados em variáveis independentes (X) e dependentes (y)
X = df.drop('species', axis=1)
y = df['species']

# Dividindo os dados em conjuntos de treino e teste
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Normalizando os dados
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# Criando e treinando o modelo
model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)

# Salvando o modelo treinado
joblib.dump(model, 'knn_model.pkl')

3. Criando a API com Flask

Agora, vamos criar a API usando Flask. A API terá um endpoint /predict que receberá dados em formato JSON e retornará a previsão do modelo.

Estrutura do Projeto

Organize seu projeto com a seguinte estrutura:

project/
│
├── app.py
├── knn_model.pkl
└── requirements.txt

Código da API

No arquivo app.py, adicione o seguinte código:

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

# Carregando o modelo
model = joblib.load('knn_model.pkl')

# Inicializando o Flask
app = Flask(__name__)

# Rota de previsão
@app.route('/predict', methods=['POST'])
def predict():
    data = request.get_json(force=True)
    predict_request = [data['sepal_length'], data['sepal_width'], data['petal_length'], data['petal_width']]
    predict_request = np.array(predict_request).reshape(1, -1)
    
    # Fazendo a previsão
    prediction = model.predict(predict_request)
    output = {'species': int(prediction[0])}
    
    return jsonify(output)

if __name__ == '__main__':
    app.run(debug=True)

Executando a API

Para iniciar a API, execute o seguinte comando no terminal:

python app.py

A API estará disponível em http://127.0.0.1:5000/predict.

4. Testando a API

Você pode usar o curl ou uma ferramenta como Postman para testar a API. Aqui está um exemplo de uso do curl:

curl -X POST -H "Content-Type: application/json" -d '{"sepal_length": 5.1, "sepal_width": 3.5, "petal_length": 1.4, "petal_width": 0.2}' http://127.0.0.1:5000/predict

A resposta será algo assim:

{
  "species": 0
}

5. Conclusão

Neste artigo, criamos uma API simples usando Flask para servir um modelo de Machine Learning. Passamos pelo treinamento do modelo, criação da API e teste do endpoint de previsão. Esta abordagem pode ser expandida para modelos mais complexos e casos de uso mais avançados.

Rolar para cima