Aprendizado Supervisionado (Supervised Learning)
Definição
Aprendizado Supervisionado (Supervised Learning) é um tipo de aprendizado de máquina onde o modelo é treinado com dados rotulados, ou seja, cada exemplo inclui entradas conhecidas (atributos) e saídas desejadas (respostas corretas).
O objetivo é fazer com que o modelo aprenda a relação entre os dados e os rótulos, para que possa prever o rótulo correto de novos dados que nunca viu antes.
Exemplos de problemas supervisionados:
- Classificação: o e-mail é spam ou não spam?
- Regressão: qual será o preço de uma casa com determinadas características?
Exemplo prático (Python) — Classificador de flores com aprendizado supervisionado
Neste exemplo, utilizaremos o conjunto de dados Iris, amplamente conhecido em projetos de aprendizado de máquina, para treinar um modelo do tipo KNN (K-Nearest Neighbors) — uma técnica clássica de aprendizado supervisionado usada para tarefas de classificação.
Sobre o load_iris()
A função load_iris()
do scikit-learn
fornece um conjunto com 150 registros de flores Iris, cada uma com 4 atributos numéricos:
- comprimento e largura da sépala
- comprimento e largura da pétala
Cada flor é classificada em uma de três espécies:
- Iris setosa
- Iris versicolor
- Iris virginica
Nosso objetivo é treinar um modelo supervisionado para prever a espécie da flor com base em suas medidas.
Código
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# 1. Carregar o conjunto de dados Iris
iris = load_iris()
# X = atributos das flores (as medidas)
# y = rótulos das espécies (0 = setosa, 1 = versicolor, 2 = virginica)
X = iris.data
y = iris.target
# 2. Dividir os dados em treino (80%) e teste (20%)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=0
)
# 3. Criar o modelo supervisionado (KNN = K-Nearest Neighbors)
modelo = KNeighborsClassifier(n_neighbors=3)
# 4. Treinar o modelo com os dados de treino
modelo.fit(X_train, y_train)
# 5. Fazer previsões com os dados de teste
y_pred = modelo.predict(X_test)
# 6. Avaliar o desempenho do modelo
acuracia = accuracy_score(y_test, y_pred)
print("Acurácia do modelo:", acuracia)
Saída esperada (exemplo)
Acurácia do modelo: 1.0
(O valor pode variar entre execuções. O importante é observar que o modelo está acertando a maioria das classificações.)
O que o modelo aprendeu?
Durante o treinamento, o modelo recebeu dados como:
[5.1, 3.5, 1.4, 0.2] → setosa
[6.3, 3.3, 6.0, 2.5] → virginica
Ele aprendeu que certas combinações de medidas estão associadas a certas espécies de flores.
Ao receber uma nova flor com medidas como:
[6.7, 3.1, 4.4, 1.4]
O modelo compara com os exemplos já vistos e retorna a espécie mais próxima, de acordo com os 3 vizinhos mais semelhantes (no caso do n_neighbors=3
).
Você pode imprimir os resultados de forma clara assim:
for medidas, previsto, esperado in zip(X_test, y_pred, y_test):
print(f"Medidas: {medidas}, Previsto: {iris.target_names[previsto]}, Esperado: {iris.target_names[esperado]}")
Exemplo de saída:
Medidas: [6.7 3.1 4.4 1.4], Previsto: versicolor, Esperado: versicolor
Medidas: [5.0 3.4 1.6 0.4], Previsto: setosa, Esperado: setosa
Medidas: [5.8 2.7 4.1 1.0], Previsto: versicolor, Esperado: virginica
O ciclo do Aprendizado Supervisionado
[Conjunto de Dados Rotulado]
↓
[Pré-processamento dos Dados]
↓
[Separação em Treino e Teste]
↓
[Escolha do Algoritmo]
↓
[Treinamento com Dados e Rótulos]
↓
[Teste e Avaliação do Modelo]
↓
[Ajustes e Repetição]
O aprendizado supervisionado é altamente utilizado em sistemas de recomendação, diagnósticos médicos, reconhecimento de imagem, e previsão de demanda, entre muitos outros.