Treinamento e Implantação de um Modelo de Aprendizado Não Supervisionado com K-means e Flask
Neste artigo, vamos explorar o treinamento de um modelo de aprendizado de máquina não supervisionado usando o algoritmo K-means e, em seguida, expor esse modelo através de uma API Flask. O foco deste artigo é o público que já trabalha com tecnologia, mas não é especialista em aprendizado de máquina.
Aprendizado Não Supervisionado
O aprendizado não supervisionado é um conjunto de técnicas de aprendizado de máquina que analisam e agrupam dados sem um “gabarito” pré-definido. Os algoritmos não supervisionados buscam padrões e estruturas nos dados sem usar rótulos de saída prévios. O objetivo é encontrar agrupamentos naturais, relações ou padrões nos dados.
Algoritmo K-means
O algoritmo K-means é uma técnica popular de aprendizado não supervisionado que se baseia em agrupar os dados em K grupos distintos, onde K é um número pré-definido de clusters. O algoritmo tenta minimizar a soma das distâncias entre os pontos de dados e os centroides dos clusters, ajustando iterativamente a posição dos centroides até que os clusters se estabilizem.
Conjunto de Dados Iris
O conjunto de dados Iris é um conjunto de dados popular que consiste em 150 amostras de flores de íris de três espécies diferentes: Iris setosa, Iris versicolor e Iris virginica. Cada amostra contém quatro características (comprimento e largura das sépalas e pétalas). Nosso objetivo é usar o algoritmo K-means para agrupar as amostras em três clusters, correspondendo às três espécies de íris.
Treinamento do Modelo K-means
Vamos começar treinando nosso modelo K-means no conjunto de dados Iris. Usaremos a biblioteca scikit-learn em Python para treinar o modelo. Primeiro, carregamos o conjunto de dados Iris, criamos um DataFrame e treinamos o modelo K-means com K=3.
# Importar bibliotecas necessárias
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
# Carregar o conjunto de dados Iris
iris = load_iris()
data = iris.data
target = iris.target
# Criar um DataFrame com os dados e as colunas
iris_df = pd.DataFrame(data, columns=iris.feature_names)
# Treinar o modelo K-means com K=3
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(iris_df)
Exportando o Modelo Treinado
Para salvar e carregar o modelo treinado, usaremos a biblioteca joblib
. Primeiro, salvamos o modelo treinado em um arquivo.
import joblib
# Salvar o modelo treinado em um arquivo
joblib.dump(kmeans, 'kmeans_model.joblib')
Criando uma API Flask
Agora que treinamos e salvamos nosso modelo, podemos criar uma API Flask para expor o modelo e fazer previsões.
from flask import Flask, request, jsonify
import numpy as np
import joblib
app = Flask(__name__)
# Carregar o modelo treinado
kmeans = joblib.load('kmeans_model.joblib')
@app.route('/predict', methods=['POST'])
def predict():
input_data = request.json
features = [input_data['sepal_length'], input_data['sepal_width'], input_data['petal_length'], input_data['petal_width']]
features = np.array(features).reshape(1, -1)
cluster = kmeans.predict(features)
return jsonify({'cluster': int(cluster[0])})
if name == 'main':
app.run(debug=True)
Em seguida, iniciamos o servidor Flask executando o arquivo app.py
.
python app.py
Agora, a API está disponível em `http://localhost:5000/predict`. Podemos fazer solicitações POST para essa URL com um JSON contendo os valores das características do Iris (comprimento e largura das sépalas e pétalas) e obter o cluster previsto como resposta.
Exemplo de requisição POST usando o curl no Linux
Aqui está um exemplo de como fazer uma solicitação POST para a API usando o comando 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://localhost:5000/predict
Este comando envia uma solicitação POST para a API com o cabeçalho Content-Type: application/json
e os dados no formato JSON.
Conclusão
Neste artigo, exploramos o treinamento e a implantação de um modelo de aprendizado não supervisionado usando o algoritmo K-means e o conjunto de dados Iris. Demonstramos como treinar o modelo, exportá-lo e criar uma API Flask para expor o modelo e fazer previsões.