1. CARREGAR E EXPLORAR OS DADOS
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
import pandas as pd
import numpy as np
Carregar dataset Iris
iris = load_iris()
X = iris.data
y = iris.target
Converter para DataFrame e visualizar
df = pd.DataFrame(X, columns=iris.feature_names)
df['especie'] = iris.target_names[y]
print("Primeiras linhas do dataset:")
print(df.head())
print(f"\nForma dos dados: {X.shape}")
print(f"Classes: {iris.target_names}")
2. PRÉ-PROCESSAR OS DADOS
Separar características e rótulos
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
print(f"\nDados de treino: {X_train.shape}")
print(f"Dados de teste: {X_test.shape}")
3. TREINAR O MODELO
modelo = DecisionTreeClassifier(random_state=42)
modelo.fit(X_train, y_train)
print("\nModelo treinado com sucesso!")
4. AVALIAR O DESEMPENHO
Previsões
y_pred = modelo.predict(X_test)
Acurácia
acuracia = accuracy_score(y_test, y_pred)
print(f"\nAcurácia: {acuracia:.2%}")
Validação cruzada
scores = cross_val_score(modelo, X, y, cv=5)
print(f"Validação cruzada (5-fold): {scores.mean():.2%} (+/- {scores.std():.2%})")
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("\nMatriz de Confusão:")
print(confusion_matrix(y_test, y_pred))
5. TESTAR COM NOVOS EXEMPLOS
novos_exemplos = np.array([
[5.0, 3.5, 1.3, 0.3], # Provavelmente Setosa
[6.5, 3.0, 5.8, 2.2] # Provavelmente Virginica
])
predicoes = modelo.predict(novos_exemplos)
print("\nPredicoes para novos exemplos:")
for i, pred in enumerate(predicoes):
print(f"Amostra {i+1}: {iris.target_names[pred]}")
:::
Classificador Iris com Python
# 1. CARREGAR E EXPLORAR OS DADOS
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
import pandas as pd
import numpy as np
# Carregar dataset Iris
iris = load_iris()
X = iris.data
y = iris.target
# Converter para DataFrame e visualizar
df = pd.DataFrame(X, columns=iris.feature_names)
df['especie'] = iris.target_names[y]
print("Primeiras linhas do dataset:")
print(df.head())
print(f"\nForma dos dados: {X.shape}")
print(f"Classes: {iris.target_names}")
# 2. PRÉ-PROCESSAR OS DADOS
# Separar características e rótulos
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
print(f"\nDados de treino: {X_train.shape}")
print(f"Dados de teste: {X_test.shape}")
# 3. TREINAR O MODELO
modelo = DecisionTreeClassifier(random_state=42)
modelo.fit(X_train, y_train)
print("\nModelo treinado com sucesso!")
# 4. AVALIAR O DESEMPENHO
# Previsões
y_pred = modelo.predict(X_test)
# Acurácia
acuracia = accuracy_score(y_test, y_pred)
print(f"\nAcurácia: {acuracia:.2%}")
# Validação cruzada
scores = cross_val_score(modelo, X, y, cv=5)
print(f"Validação cruzada (5-fold): {scores.mean():.2%} (+/- {scores.std():.2%})")
# 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("\nMatriz de Confusão:")
print(confusion_matrix(y_test, y_pred))
# 5. TESTAR COM NOVOS EXEMPLOS
novos_exemplos = np.array([
[5.0, 3.5, 1.3, 0.3], # Provavelmente Setosa
[6.5, 3.0, 5.8, 2.2] # Provavelmente Virginica
])
predicoes = modelo.predict(novos_exemplos)
print("\nPredicoes para novos exemplos:")
for i, pred in enumerate(predicoes):
print(f"Amostra {i+1}: {iris.target_names[pred]}")
Explicação do Código
Etapa 1 - Exploração: O código carrega o dataset Iris contendo 150 amostras de 4 características (comprimento/largura de sépala e pétala) de 3 espécies de flores.
Etapa 2 - Pré-processamento: Divide os dados em 80% para treino e 20% para teste, mantendo a aleatoriedade controlada com random_state=42.
Etapa 3 - Treinamento: Utiliza Árvore de Decisão, algoritmo simples e interpretável que aprende padrões nos dados de treino.
Etapa 4 - Avaliação: Calcula acurácia nos dados de teste e aplica validação cruzada 5-fold para validação mais robusta, além de fornecer métricas detalhadas por classe.
Etapa 5 - Testes: Realiza previsões em exemplos novos, demonstrando a capacidade do modelo generalizar para dados não vistos.