Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Mão na massa: construindo um classificador com o dataset Iris

Foi desenvolvido um classificador supervisionado utilizando o dataset Iris, disponível na biblioteca sklearn. Inicialmente, os dados foram carregados e convertidos para um DataFrame do Pandas para facilitar a exploração. Em seguida, foram separados os atributos e os rótulos, e os dados foram divididos em conjuntos de treino e teste.

Para o treinamento, foi utilizado o algoritmo K-Nearest Neighbors (KNN), que classifica novas amostras com base nas amostras mais próximas. Após o treinamento, o modelo foi avaliado com base na acurácia, relatório de classificação e validação cruzada. Por fim, o sistema foi testado com novos exemplos, demonstrando sua capacidade de prever a espécie de flores com base nas medidas informadas.

Essa atividade demonstra, na prática, como funciona o aprendizado supervisionado, em que o modelo aprende por meio de dados rotulados e realiza previsões sobre novos dados.

# Importando bibliotecas
import pandas as pd
from sklearn.datasets import load_iris

# Carregando o dataset Iris
iris = load_iris()

# Criando um DataFrame com os dados
df = pd.DataFrame(iris.data, columns=iris.feature_names)

# Adicionando a coluna com os rótulos numéricos
df['target'] = iris.target

# Adicionando a coluna com o nome da espécie
df['species'] = df['target'].apply(lambda x: iris.target_names[x])

# Visualizando as primeiras linhas
print(df.head())

Carregar e explorar os dados

from sklearn.model_selection import train_test_split

# Separando atributos (X) e rótulos (y)
X = iris.data
y = iris.target

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

print("Tamanho do conjunto de treino:", len(X_train))
print("Tamanho do conjunto de teste:", len(X_test))

Pré-processar os dados

from sklearn.neighbors import KNeighborsClassifier

# Criando o modelo
modelo = KNeighborsClassifier(n_neighbors=3)

# Treinando o modelo
modelo.fit(X_train, y_train)

Treinar um modelo de classificação

from sklearn.metrics import accuracy_score, classification_report, confusion_matrix

# Fazendo previsões
y_pred = modelo.predict(X_test)

# Calculando a acurácia
acuracia = accuracy_score(y_test, y_pred)
print("Acurácia do modelo:", acuracia)

# Relatório de classificação
print("\nRelatório de Classificação:")
print(classification_report(y_test, y_pred, target_names=iris.target_names))

# Matriz de confusão
print("Matriz de Confusão:")
print(confusion_matrix(y_test, y_pred))

Avaliar o desempenho do modelo

from sklearn.model_selection import cross_val_score

# Validação cruzada com 5 partições
scores = cross_val_score(modelo, X, y, cv=5)

print("Acurácias em cada partição:", scores)
print("Acurácia média:", scores.mean())

Utilizar validação cruzada

# Exemplo de nova flor:
# [comprimento da sépala, largura da sépala, comprimento da pétala, largura da pétala]
nova_flor = [[5.1, 3.5, 1.4, 0.2]]

# Fazendo a previsão
previsao = modelo.predict(nova_flor)

# Exibindo o nome da espécie prevista
print("Espécie prevista:", iris.target_names[previsao[0]])

Testar com novos exemplos

Caso deseje ver o código no colab.research me envia o email que lhe dou acesso professor.
Respeitosamente...

2 respostas

Olá, Leandro! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou a biblioteca sklearn para aplicar aprendizado supervisionado com Python, utilizou muito bem o algoritmo KNN para classificar os dados e ainda compreendeu a importância da validação cruzada para avaliar o desempenho do modelo de forma mais robusta.

Uma dica interessante para o futuro é visualizar a matriz de confusão com um gráfico para facilitar a interpretação dos resultados. Assim:

import seaborn as sns
import matplotlib.pyplot as plt

sns.heatmap(confusion_matrix(y_test, y_pred), annot=True, cmap="Blues", fmt="d")
plt.ylabel("Real")
plt.xlabel("Previsto")
plt.title("Matriz de Confusão")
plt.show()

Isso faz com que os erros e acertos fiquem mais claros visualmente.

Sugestão de conteúdo para você mergulhar ainda mais no tema:

Alguns materiais podem estar em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
solução!

Obrigado Professor, vou aplicar.