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.