Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

0
respostas

Mão na massa: construindo um classificador com o dataset Iris

# 1. Carregar e explorar os dados:
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

# 1.1. Carregar dataset:
iris = load_iris()

# 1.2. Converter para DataFrame:
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
df['species'] = iris.target

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

# 2. Pré-processar os dados:
X = df[iris.feature_names]   # atributos
y = df['species']            # rótulos

# 2.1. Dividir em treino e teste:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 3. Treinar modelo de classificação (KNN):
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)

# 4. Avaliar desempenho:
y_pred = knn.predict(X_test)
print("\nAcurácia no conjunto de teste:", accuracy_score(y_test, y_pred))

scores = cross_val_score(knn, X, y, cv=5)
print("Acurácia média com validação cruzada:", scores.mean())

# 5. Testar com novos exemplos:
nova_flor = [[5.1, 3.5, 1.4, 0.2]]  # valores típicos da Setosa
predicao = knn.predict(nova_flor)
print("\nNova flor classificada como:", iris.target_names[predicao][0])

Primeiras linhas do dataset:
   sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)  \
0                5.1               3.5                1.4               0.2   
1                4.9               3.0                1.4               0.2   
2                4.7               3.2                1.3               0.2   
3                4.6               3.1                1.5               0.2   
4                5.0               3.6                1.4               0.2   

   species  
0        0  
1        0  
2        0  
3        0  
4        0  

Acurácia no conjunto de teste: 1.0
Acurácia média com validação cruzada: 0.9666666666666668

Nova flor classificada como: setosa
/usr/local/lib/python3.12/dist-packages/sklearn/utils/validation.py:2739: UserWarning: X does not have valid feature names, but KNeighborsClassifier was fitted with feature names
  warnings.warn(