# 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(