1
resposta

[Projeto] Construindo um classificador com o dataset Iris

Olá, tudo bem!

# =========================================
# ETAPA 1 - CARREGAR E EXPLORAR OS DADOS
# =========================================

from sklearn.datasets import load_iris
import pandas as pd

# Carregar dataset
iris = load_iris()

# Criar DataFrame
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)

# Adicionar coluna de espécies
df['species'] = iris.target

# Mapear valores numéricos para nomes
df['species'] = df['species'].map({
    0: 'setosa',
    1: 'versicolor',
    2: 'virginica'
})

# Visualizar dados
print("Primeiras linhas do dataset:")
print(df.head())

print("\nInformações gerais:")
print(df.info())

print("\nResumo estatístico:")
print(df.describe())

print("\nDistribuição das classes:")
print(df['species'].value_counts())


# =========================================
# ETAPA 2 - PRÉ-PROCESSAMENTO
# =========================================

from sklearn.model_selection import train_test_split

# Separar atributos e rótulos
X = df.drop('species', axis=1)
y = df['species']

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

print("\nDimensões:")
print("Treino:", X_train.shape, y_train.shape)
print("Teste:", X_test.shape, y_test.shape)


# =========================================
# ETAPA 3 - TREINAMENTO DO MODELO (KNN)
# =========================================

from sklearn.neighbors import KNeighborsClassifier

# Criar modelo
knn = KNeighborsClassifier(n_neighbors=3)

# Treinar modelo
knn.fit(X_train, y_train)

print("\nModelo treinado com sucesso!")


# =========================================
# ETAPA 4 - AVALIAÇÃO DO MODELO
# =========================================

from sklearn.metrics import accuracy_score, classification_report
from sklearn.model_selection import cross_val_score

# Fazer previsões
y_pred = knn.predict(X_test)

# Calcular acurácia
acuracia = accuracy_score(y_test, y_pred)
print(f"\nAcurácia do modelo: {acuracia:.2f}")

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

# Validação cruzada
scores = cross_val_score(knn, X, y, cv=5)
print("\nValidação cruzada (5 folds):")
print("Acurácias:", scores)
print("Acurácia média:", scores.mean())


# =========================================
# ETAPA 5 - TESTE COM NOVOS DADOS
# =========================================

# Novas amostras
novos_dados = pd.DataFrame([
    [5.0, 3.4, 1.5, 0.2],
    [6.5, 2.8, 4.6, 1.5],
    [7.2, 3.0, 6.1, 2.3]
], columns=X.columns)

print("\nNovos dados:")
print(novos_dados)

# Fazer previsões
previsoes = knn.predict(novos_dados)

print("\nPrevisões:")
for i, pred in enumerate(previsoes):
    print(f"Amostra {i+1}: {pred}")
1 resposta

Olá, Cássio! Como vai?

Você mandou muito bem na implementação do pipeline!

Sua solução demonstra clareza ao estruturar as etapas de exploração dos dados, objetividade ao aplicar o pré-processamento com divisão em treino e teste e profundidade ao avaliar o modelo com métricas e validação cruzada.

Uma sugestão para o futuro seria incluir a comparação de diferentes algoritmos além do KNN, como Decision Tree ou Random Forest, para enriquecer a análise e verificar qual modelo se adapta melhor ao conjunto de dados.

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!