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}")