1
resposta

[Classificador de flor Iris] - ClassificadorFlorIris.ipynb

============================================================

CLASSIFICADOR DE FLORES IRIS (Machine Learning Supervisionado)

============================================================

---------------------------

1. IMPORTAÇÕES

---------------------------

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
import pandas as pd
import numpy as np

---------------------------

2. CARREGAR E EXPLORAR OS DADOS

---------------------------

iris = load_iris()

Criar DataFrame

df = pd.DataFrame(iris.data, columns=iris.feature_names)
df["species"] = iris.target

print("=== Primeiras linhas do dataset ===")
print(df.head(), "\n")

---------------------------

3. PRÉ-PROCESSAMENTO

---------------------------

X = df[iris.feature_names] # atributos
y = df["species"] # rótulos (0,1,2)

Divisão em treino e teste (70% / 30%)

X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42
)

print("Tamanho treino:", X_train.shape)
print("Tamanho teste:", X_test.shape, "\n")

---------------------------

4. TREINAR MODELOS

---------------------------

Árvore de Decisão

model_dt = DecisionTreeClassifier(random_state=42)
model_dt.fit(X_train, y_train)

KNN

model_knn = KNeighborsClassifier(n_neighbors=5)
model_knn.fit(X_train, y_train)

---------------------------

5. AVALIAÇÃO DOS MODELOS

---------------------------

--- Árvore de Decisão ---

pred_dt = model_dt.predict(X_test)
acc_dt = accuracy_score(y_test, pred_dt)
cv_dt = cross_val_score(model_dt, X, y, cv=5).mean()

--- KNN ---

pred_knn = model_knn.predict(X_test)
acc_knn = accuracy_score(y_test, pred_knn)
cv_knn = cross_val_score(model_knn, X, y, cv=5).mean()

print("=== Resultados ===")
print(f"Acurácia Árvore de Decisão: {acc_dt:.4f}")
print(f"Validação Cruzada (DT): {cv_dt:.4f}")

print(f"Acurácia KNN: {acc_knn:.4f}")
print(f"Validação Cruzada (KNN): {cv_knn:.4f}\n")

---------------------------

6. TESTAR NOVOS EXEMPLOS

---------------------------

Nova flor: [sepal length, sepal width, petal length, petal width]

nova_flor = np.array([[5.1, 3.5, 1.4, 0.2]])

pred_dt_label = iris.target_names[model_dt.predict(nova_flor)][0]
pred_knn_label = iris.target_names[model_knn.predict(nova_flor)][0]

print("=== Teste com nova flor ===")
print("Árvore de Decisão previu:", pred_dt_label)
print("KNN previu:", pred_knn_label)

1 resposta

Oi, Marcelo! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu projeto ficou organizado e gostei de como você aplicou dois modelos diferentes para comparar resultados. A parte de teste com uma nova flor também mostra que você entendeu bem o fluxo completo do classificador.

Uma dica interessante para o futuro é testar o ajuste de hiperparâmetros no KNN. Veja este exemplo:


from sklearn.neighbors import KNeighborsClassifier

modelo = KNeighborsClassifier(n_neighbors=3)
modelo.fit(X_train, y_train)

# Faz a predicao
pred = modelo.predict(X_test)

Este código altera o número de vizinhos e pode melhorar a acurácia

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