Perfeito! Vou te ajudar a resolver essa tarefa de forma completa e clara, com código pronto para você experimentar o clustering (K-Means e Hierárquico) e a redução de dimensionalidade com PCA no dataset Iris.
Resolução da tarefa – Clustering + PCA no Iris
Passos que vamos seguir
- Carregar e explorar o dataset Iris.
- Aplicar K-Means e Hierarchical Clustering.
- Usar PCA para reduzir de 4 dimensões → 2 dimensões para visualização.
- Visualizar os agrupamentos.
Código Python completo
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans, AgglomerativeClustering
from sklearn.decomposition import PCA
from scipy.cluster.hierarchy import dendrogram, linkage
# 1. Carregar o dataset Iris
iris = load_iris()
X = iris.data
y = iris.target
feature_names = iris.feature_names
# Explorar o dataset
df = pd.DataFrame(X, columns=feature_names)
print(df.head())
# 2. Redução de dimensionalidade com PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
# Visualizar dados reais em 2D com as espécies
plt.figure(figsize=(8, 6))
sns.scatterplot(x=X_pca[:, 0], y=X_pca[:, 1], hue=iris.target_names[y], palette='Set1', s=100)
plt.title("Iris Dataset (PCA - Dados Reais)")
plt.xlabel("Componente Principal 1")
plt.ylabel("Componente Principal 2")
plt.show()
# 3. K-Means Clustering
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans_labels = kmeans.fit_predict(X)
# Visualizar K-Means clusters
plt.figure(figsize=(8, 6))
sns.scatterplot(x=X_pca[:, 0], y=X_pca[:, 1], hue=kmeans_labels, palette='Set2', s=100)
plt.title("K-Means Clustering no Iris Dataset (PCA)")
plt.xlabel("Componente Principal 1")
plt.ylabel("Componente Principal 2")
plt.show()
# 4. Hierarchical Clustering
hierarchical = AgglomerativeClustering(n_clusters=3)
hier_labels = hierarchical.fit_predict(X)
# Visualizar Hierarchical clusters
plt.figure(figsize=(8, 6))
sns.scatterplot(x=X_pca[:, 0], y=X_pca[:, 1], hue=hier_labels, palette='Set3', s=100)
plt.title("Hierarchical Clustering no Iris Dataset (PCA)")
plt.xlabel("Componente Principal 1")
plt.ylabel("Componente Principal 2")
plt.show()
# Dendrograma
plt.figure(figsize=(10, 7))
linked = linkage(X, method='ward')
dendrogram(linked, labels=y)
plt.title("Dendrograma - Hierarchical Clustering")
plt.xlabel("Amostras")
plt.ylabel("Distância")
plt.show()
O que este código faz:
Mostra os dados reais reduzidos para 2D com PCA (para ver como as espécies são distribuídas). Aplica K-Means e plota os clusters encontrados. Aplica Hierarchical Clustering e mostra os clusters com cores diferentes. Exibe o dendrograma para visualizar como os clusters hierárquicos foram construídos.
Perguntas da tarefa respondidas
Como identificar padrões e agrupamentos naturais?
Usando K-Means e Hierarchical Clustering, os algoritmos agrupam automaticamente as amostras com base na similaridade das medidas. Os gráficos mostram os padrões escondidos nos dados.
Como reduzir a complexidade dos dados?
Aplicando PCA, reduzimos as 4 dimensões (sépalas e pétalas) para 2 componentes principais, mantendo a maior parte da variância dos dados para facilitar a visualização.
Resultado: você terá gráficos mostrando os agrupamentos encontrados e conseguirá comparar com os rótulos reais das espécies.