============================================================
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)