Aprendizaje no supervisado
para este ejercicio copiamos el codigo visto en cada una de los videos de la unidad, pues cada video es bastante claro sobre el tema.
# K-means
from sklearn.datasets import load_iris
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# Cargar Dataset
iris = load_iris()
X = iris.data
# Aplicar K-Means
kmeans = KMeans(n_clusters=3, random_state=42)
clusters = kmeans.fit_predict(X)
# Visualizar los clusters
plt.scatter(X[:, 0], X[:, 1], c=clusters, cmap='viridis')
plt.title("Agrupando con K-Means")
plt.xlabel("Caracteristica 1")
plt.ylabel("Caracteristica 2")
plt.show()
# Implementando la clusterización jerárquica: Algoritmo de aglomeración gerárquica
from sklearn.datasets import load_iris
import scipy.cluster.hierarchy as sch
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
# Cargar el dataset Iris
iris = load_iris()
X = iris.data
# Normalizar los datos para mejorar el desempeño del clustering
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
#--- Creando y analizando un dendrograma
# Crear el dendrograma
plt.figure(figsize=(10, 5))
sch.dendrogram(sch.linkage(X_scaled, method='ward'))
plt.title("Dendrograma del Agrupamiento Jerárquico")
plt.xlabel("Muestras")
plt.ylabel("Distancia Eucliadiana")
plt.show()
#Aplicando el clustering gerárquico
from sklearn.cluster import AgglomerativeClustering
# Aplicar Hierarchical Clustering definiendo 3 grupos
hc = AgglomerativeClustering(n_clusters=3, metric='euclidean', linkage='ward')
clusters = hc.fit_predict(X_scaled)
# Visualizar los clusters
plt.scatter(X[:, 0], X[:, 1], c=clusters, cmap='viridis')
plt.title("Agrupando con Hierarchical Clustering")
plt.xlabel("Caracteristica 1")
plt.ylabel("Caracteristica 2")
plt.show()
# Reducción de dimensionalidad con PCA
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
# Cargar el dataset Iris
iris = load_iris()
X = iris.data
y = iris.target # Etiquetas de las especies de flores
# Normalizar los datos para mejorar el desempeño
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Aplicando PCA para reducir dimensiones
# Aplicar PCA para reducir de 4 a dos dimensiones
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
# Visualizando los resultados de PCA
# Visualizar los datos reducidos
plt.figure(figsize=(8, 6))
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis', alpha=0.7)
plt.xlabel("Componente Principal 1")
plt.ylabel("Componente Principal 2")
plt.title("Reducción de la Dimensionalidad con PCA")
plt.colorbar(label="Especies de Flores")
plt.show()
# Evaluando la varianza explicada por PCA
print(pca.explained_variance_ratio_)
print(f"Varianza acumulada: {sum(pca.explained_variance_ratio_):.2f}")