Solución:
import matplotlib.pyplot as plt
import scipy.cluster.hierarchy as sch
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans, AgglomerativeClustering
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
Cargar el dataset Iris
iris = load_iris()
X = iris.data
y = iris.target
Normalizar los datos
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
==========================
K-Means
==========================
kmeans = KMeans(n_clusters=3, random_state=42)
clusters_kmeans = kmeans.fit_predict(X_scaled)
plt.figure(figsize=(6,4))
plt.scatter(X_scaled[:,0], X_scaled[:,1], c=clusters_kmeans, cmap="viridis")
plt.title("K-Means")
plt.xlabel("Característica 1")
plt.ylabel("Característica 2")
plt.show()
==========================
Dendrograma
==========================
plt.figure(figsize=(8,4))
sch.dendrogram(sch.linkage(X_scaled, method="ward"))
plt.title("Dendrograma")
plt.xlabel("Muestras")
plt.ylabel("Distancia")
plt.show()
Agrupamiento Jerárquico
hc = AgglomerativeClustering(n_clusters=3, metric="euclidean", linkage="ward")
clusters_hc = hc.fit_predict(X_scaled)
plt.figure(figsize=(6,4))
plt.scatter(X_scaled[:,0], X_scaled[:,1], c=clusters_hc, cmap="rainbow")
plt.title("Agrupamiento Jerárquico")
plt.xlabel("Característica 1")
plt.ylabel("Característica 2")
plt.show()
==========================
PCA
==========================
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
plt.figure(figsize=(6,4))
plt.scatter(X_pca[:,0], X_pca[:,1], c=y, cmap="viridis")
plt.title("PCA")
plt.xlabel("Componente Principal 1")
plt.ylabel("Componente Principal 2")
plt.colorbar(label="Especies")
plt.show()
print("Varianza explicada:", pca.explained_variance_ratio_)
print("Varianza total:", pca.explained_variance_ratio_.sum())
Explicación
En esta actividad se utilizaron técnicas de aprendizaje no supervisado para analizar el conjunto de datos Iris, el cual contiene información de tres especies de flores.
Primero, los datos fueron normalizados con StandardScaler para que todas las variables tuvieran la misma escala y evitar que alguna característica influyera más que las demás.
Posteriormente, se aplicó K-Means, configurando tres clusters, ya que el conjunto de datos contiene tres especies. Este algoritmo agrupa automáticamente las observaciones minimizando la distancia entre cada muestra y el centroide de su grupo.
Después se utilizó el Agrupamiento Jerárquico. Inicialmente se generó un dendrograma, que permitió visualizar cómo las observaciones se agrupan de forma progresiva y confirmar que tres grupos representan adecuadamente la estructura de los datos. Luego se aplicó Agglomerative Clustering para obtener dichos grupos.
Finalmente, se empleó PCA (Análisis de Componentes Principales) para reducir las cuatro variables originales a solo dos componentes principales. Esto permitió visualizar los datos de forma sencilla, conservando la mayor parte de la información mediante la varianza explicada.
Conclusión
Las técnicas de K-Means y Agrupamiento Jerárquico permitieron identificar agrupamientos naturales dentro del conjunto de datos Iris, mientras que PCA redujo la dimensionalidad sin perder la mayor parte de la información relevante. Estas herramientas son fundamentales en el aprendizaje no supervisado, ya que facilitan el descubrimiento de patrones ocultos, la exploración de datos y la simplificación de conjuntos de datos complejos para su posterior análisis.