Capítulo 5: Técnicas de Aprendizaje No Supervisado
Ejercicios Prácticos del Capítulo 5
Ejercicio 1: Agrupamiento K-Means
Tarea: Se te proporciona un conjunto de datos sintético que contiene dos características. Utiliza el agrupamiento K-Means para agrupar los datos en tres grupos y visualiza los grupos con sus centroides.
Solución:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# Data: Features 1 and 2
X = np.array([[2.5, 3.1], [1.8, 2.3], [3.4, 3.0], [4.1, 4.2], [1.9, 2.8],
[3.6, 3.7], [2.2, 3.5], [4.0, 4.5]])
# Apply K-Means clustering with 3 clusters
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
# Get cluster labels and centroids
labels = kmeans.labels_
centroids = kmeans.cluster_centers_
# Plot the clusters and centroids
plt.scatter(X[:, 0], X[:, 1], c=labels, s=50, cmap='viridis')
plt.scatter(centroids[:, 0], centroids[:, 1], s=200, c='red', marker='x')
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.title("K-Means Clustering")
plt.show()
Ejercicio 2: Reducción de Dimensionalidad con PCA
Tarea: Tienes un conjunto de datos con cinco características. Utiliza el Análisis de Componentes Principales (PCA) para reducir la dimensionalidad a dos componentes y visualizar la proyección 2D de los datos.
Solución:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
# Data: 5 features
X = np.array([[2.5, 1.2, 3.4, 0.8, 1.5],
[1.9, 2.1, 1.8, 2.3, 0.7],
[3.1, 2.5, 2.2, 1.8, 2.0],
[2.2, 3.4, 2.9, 3.1, 1.8],
[4.5, 4.0, 3.5, 2.9, 2.7]])
# Standardize the data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Apply PCA to reduce to 2 components
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
# Plot the 2D projection
plt.scatter(X_pca[:, 0], X_pca[:, 1], s=100)
plt.xlabel("Principal Component 1")
plt.ylabel("Principal Component 2")
plt.title("PCA Projection")
plt.show()
Ejercicio 3: t-SNE para Reducción de Dimensionalidad
Tarea: Utiliza t-SNE para reducir la dimensionalidad de un conjunto de datos con tres características a dos dimensiones. Visualiza la proyección 2D de t-SNE.
Solución:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
from sklearn.preprocessing import StandardScaler
# Data: 3 features
X = np.array([[2.1, 3.2, 1.1],
[1.8, 2.5, 3.6],
[3.0, 3.1, 1.5],
[2.5, 2.9, 0.8],
[1.9, 2.4, 3.2]])
# Standardize the data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Apply t-SNE to reduce to 2 dimensions
tsne = TSNE(n_components=2, random_state=42)
X_tsne = tsne.fit_transform(X_scaled)
# Plot the 2D t-SNE projection
plt.scatter(X_tsne[:, 0], X_tsne[:, 1], s=100)
plt.xlabel("t-SNE Dimension 1")
plt.ylabel("t-SNE Dimension 2")
plt.title("t-SNE Projection")
plt.show()
Ejercicio 4: UMAP para Reducción de Dimensionalidad
Tarea: Utiliza UMAP para reducir la dimensionalidad de un conjunto de datos con cuatro características a dos dimensiones. Visualiza la proyección 2D de UMAP.
Solución:
import umap
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
# Data: 4 features
X = np.array([[3.1, 2.0, 3.8, 4.0],
[1.9, 1.5, 3.1, 2.3],
[2.8, 3.0, 1.5, 3.8],
[3.4, 2.9, 2.7, 3.5],
[2.1, 1.8, 2.9, 2.6]])
# Standardize the data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Apply UMAP to reduce to 2 dimensions
umap_model = umap.UMAP(n_neighbors=5, min_dist=0.3, random_state=42)
X_umap = umap_model.fit_transform(X_scaled)
# Plot the 2D UMAP projection
plt.scatter(X_umap[:, 0], X_umap[:, 1], s=100)
plt.xlabel("UMAP Dimension 1")
plt.ylabel("UMAP Dimension 2")
plt.title("UMAP Projection")
plt.show()
Ejercicio 5: Evaluación de Agrupamiento con Silhouette Score
Tarea: Aplica el agrupamiento K-Means al siguiente conjunto de datos y calcula el Silhouette Score para evaluar el rendimiento del agrupamiento.
Solución:
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
import numpy as np
# Data: Features 1 and 2
X = np.array([[2.5, 3.5], [3.1, 2.9], [1.8, 2.7], [4.2, 3.6], [3.5, 4.0],
[1.9, 3.3], [4.5, 3.2], [2.0, 2.8]])
# Apply K-Means clustering with 3 clusters
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
labels = kmeans.labels_
# Calculate the Silhouette Score
silhouette_avg = silhouette_score(X, labels)
print(f"Silhouette Score: {silhouette_avg:.2f}")
Ejercicio 6: Evaluación de la Reducción de Dimensionalidad con Varianza Explicada
Tarea: Aplica PCA para reducir el siguiente conjunto de datos de cinco características a tres componentes. Calcula y grafica la proporción de varianza explicada para cada componente.
Solución:
from sklearn.decomposition import PCA
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
# Data: 5 features
X = np.array([[2.5, 3.1, 2.8, 4.0, 2.1],
[3.0, 2.7, 1.9, 2.8, 3.6],
[1.9, 2.3, 3.7, 3.4, 2.9],
[4.2, 3.6, 4.1, 2.9, 3.5],
[3.6, 4.0, 2.9, 2.2, 3.0]])
# Standardize the data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Apply PCA to reduce to 3 components
pca = PCA(n_components=3)
pca.fit(X_scaled)
# Plot the explained variance ratio for each component
explained_variance = pca.explained_variance_ratio_
plt.bar(range(1, 4), explained_variance, tick_label=["PC1", "PC2", "PC3"])
plt.xlabel("Principal Components")
plt.ylabel("Explained Variance Ratio")
plt.title("Explained Variance by Principal Components")
plt.show()
Estos ejercicios prácticos presentan una variedad de técnicas de aprendizaje no supervisado, que incluyen agrupamiento, reducción de dimensionalidad y métricas de evaluación. Cada ejercicio refuerza conceptos clave del Capítulo 5, ofreciéndote experiencia práctica en la implementación y evaluación de estos métodos poderosos.
Ejercicios Prácticos del Capítulo 5
Ejercicio 1: Agrupamiento K-Means
Tarea: Se te proporciona un conjunto de datos sintético que contiene dos características. Utiliza el agrupamiento K-Means para agrupar los datos en tres grupos y visualiza los grupos con sus centroides.
Solución:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# Data: Features 1 and 2
X = np.array([[2.5, 3.1], [1.8, 2.3], [3.4, 3.0], [4.1, 4.2], [1.9, 2.8],
[3.6, 3.7], [2.2, 3.5], [4.0, 4.5]])
# Apply K-Means clustering with 3 clusters
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
# Get cluster labels and centroids
labels = kmeans.labels_
centroids = kmeans.cluster_centers_
# Plot the clusters and centroids
plt.scatter(X[:, 0], X[:, 1], c=labels, s=50, cmap='viridis')
plt.scatter(centroids[:, 0], centroids[:, 1], s=200, c='red', marker='x')
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.title("K-Means Clustering")
plt.show()
Ejercicio 2: Reducción de Dimensionalidad con PCA
Tarea: Tienes un conjunto de datos con cinco características. Utiliza el Análisis de Componentes Principales (PCA) para reducir la dimensionalidad a dos componentes y visualizar la proyección 2D de los datos.
Solución:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
# Data: 5 features
X = np.array([[2.5, 1.2, 3.4, 0.8, 1.5],
[1.9, 2.1, 1.8, 2.3, 0.7],
[3.1, 2.5, 2.2, 1.8, 2.0],
[2.2, 3.4, 2.9, 3.1, 1.8],
[4.5, 4.0, 3.5, 2.9, 2.7]])
# Standardize the data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Apply PCA to reduce to 2 components
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
# Plot the 2D projection
plt.scatter(X_pca[:, 0], X_pca[:, 1], s=100)
plt.xlabel("Principal Component 1")
plt.ylabel("Principal Component 2")
plt.title("PCA Projection")
plt.show()
Ejercicio 3: t-SNE para Reducción de Dimensionalidad
Tarea: Utiliza t-SNE para reducir la dimensionalidad de un conjunto de datos con tres características a dos dimensiones. Visualiza la proyección 2D de t-SNE.
Solución:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
from sklearn.preprocessing import StandardScaler
# Data: 3 features
X = np.array([[2.1, 3.2, 1.1],
[1.8, 2.5, 3.6],
[3.0, 3.1, 1.5],
[2.5, 2.9, 0.8],
[1.9, 2.4, 3.2]])
# Standardize the data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Apply t-SNE to reduce to 2 dimensions
tsne = TSNE(n_components=2, random_state=42)
X_tsne = tsne.fit_transform(X_scaled)
# Plot the 2D t-SNE projection
plt.scatter(X_tsne[:, 0], X_tsne[:, 1], s=100)
plt.xlabel("t-SNE Dimension 1")
plt.ylabel("t-SNE Dimension 2")
plt.title("t-SNE Projection")
plt.show()
Ejercicio 4: UMAP para Reducción de Dimensionalidad
Tarea: Utiliza UMAP para reducir la dimensionalidad de un conjunto de datos con cuatro características a dos dimensiones. Visualiza la proyección 2D de UMAP.
Solución:
import umap
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
# Data: 4 features
X = np.array([[3.1, 2.0, 3.8, 4.0],
[1.9, 1.5, 3.1, 2.3],
[2.8, 3.0, 1.5, 3.8],
[3.4, 2.9, 2.7, 3.5],
[2.1, 1.8, 2.9, 2.6]])
# Standardize the data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Apply UMAP to reduce to 2 dimensions
umap_model = umap.UMAP(n_neighbors=5, min_dist=0.3, random_state=42)
X_umap = umap_model.fit_transform(X_scaled)
# Plot the 2D UMAP projection
plt.scatter(X_umap[:, 0], X_umap[:, 1], s=100)
plt.xlabel("UMAP Dimension 1")
plt.ylabel("UMAP Dimension 2")
plt.title("UMAP Projection")
plt.show()
Ejercicio 5: Evaluación de Agrupamiento con Silhouette Score
Tarea: Aplica el agrupamiento K-Means al siguiente conjunto de datos y calcula el Silhouette Score para evaluar el rendimiento del agrupamiento.
Solución:
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
import numpy as np
# Data: Features 1 and 2
X = np.array([[2.5, 3.5], [3.1, 2.9], [1.8, 2.7], [4.2, 3.6], [3.5, 4.0],
[1.9, 3.3], [4.5, 3.2], [2.0, 2.8]])
# Apply K-Means clustering with 3 clusters
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
labels = kmeans.labels_
# Calculate the Silhouette Score
silhouette_avg = silhouette_score(X, labels)
print(f"Silhouette Score: {silhouette_avg:.2f}")
Ejercicio 6: Evaluación de la Reducción de Dimensionalidad con Varianza Explicada
Tarea: Aplica PCA para reducir el siguiente conjunto de datos de cinco características a tres componentes. Calcula y grafica la proporción de varianza explicada para cada componente.
Solución:
from sklearn.decomposition import PCA
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
# Data: 5 features
X = np.array([[2.5, 3.1, 2.8, 4.0, 2.1],
[3.0, 2.7, 1.9, 2.8, 3.6],
[1.9, 2.3, 3.7, 3.4, 2.9],
[4.2, 3.6, 4.1, 2.9, 3.5],
[3.6, 4.0, 2.9, 2.2, 3.0]])
# Standardize the data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Apply PCA to reduce to 3 components
pca = PCA(n_components=3)
pca.fit(X_scaled)
# Plot the explained variance ratio for each component
explained_variance = pca.explained_variance_ratio_
plt.bar(range(1, 4), explained_variance, tick_label=["PC1", "PC2", "PC3"])
plt.xlabel("Principal Components")
plt.ylabel("Explained Variance Ratio")
plt.title("Explained Variance by Principal Components")
plt.show()
Estos ejercicios prácticos presentan una variedad de técnicas de aprendizaje no supervisado, que incluyen agrupamiento, reducción de dimensionalidad y métricas de evaluación. Cada ejercicio refuerza conceptos clave del Capítulo 5, ofreciéndote experiencia práctica en la implementación y evaluación de estos métodos poderosos.
Ejercicios Prácticos del Capítulo 5
Ejercicio 1: Agrupamiento K-Means
Tarea: Se te proporciona un conjunto de datos sintético que contiene dos características. Utiliza el agrupamiento K-Means para agrupar los datos en tres grupos y visualiza los grupos con sus centroides.
Solución:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# Data: Features 1 and 2
X = np.array([[2.5, 3.1], [1.8, 2.3], [3.4, 3.0], [4.1, 4.2], [1.9, 2.8],
[3.6, 3.7], [2.2, 3.5], [4.0, 4.5]])
# Apply K-Means clustering with 3 clusters
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
# Get cluster labels and centroids
labels = kmeans.labels_
centroids = kmeans.cluster_centers_
# Plot the clusters and centroids
plt.scatter(X[:, 0], X[:, 1], c=labels, s=50, cmap='viridis')
plt.scatter(centroids[:, 0], centroids[:, 1], s=200, c='red', marker='x')
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.title("K-Means Clustering")
plt.show()
Ejercicio 2: Reducción de Dimensionalidad con PCA
Tarea: Tienes un conjunto de datos con cinco características. Utiliza el Análisis de Componentes Principales (PCA) para reducir la dimensionalidad a dos componentes y visualizar la proyección 2D de los datos.
Solución:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
# Data: 5 features
X = np.array([[2.5, 1.2, 3.4, 0.8, 1.5],
[1.9, 2.1, 1.8, 2.3, 0.7],
[3.1, 2.5, 2.2, 1.8, 2.0],
[2.2, 3.4, 2.9, 3.1, 1.8],
[4.5, 4.0, 3.5, 2.9, 2.7]])
# Standardize the data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Apply PCA to reduce to 2 components
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
# Plot the 2D projection
plt.scatter(X_pca[:, 0], X_pca[:, 1], s=100)
plt.xlabel("Principal Component 1")
plt.ylabel("Principal Component 2")
plt.title("PCA Projection")
plt.show()
Ejercicio 3: t-SNE para Reducción de Dimensionalidad
Tarea: Utiliza t-SNE para reducir la dimensionalidad de un conjunto de datos con tres características a dos dimensiones. Visualiza la proyección 2D de t-SNE.
Solución:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
from sklearn.preprocessing import StandardScaler
# Data: 3 features
X = np.array([[2.1, 3.2, 1.1],
[1.8, 2.5, 3.6],
[3.0, 3.1, 1.5],
[2.5, 2.9, 0.8],
[1.9, 2.4, 3.2]])
# Standardize the data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Apply t-SNE to reduce to 2 dimensions
tsne = TSNE(n_components=2, random_state=42)
X_tsne = tsne.fit_transform(X_scaled)
# Plot the 2D t-SNE projection
plt.scatter(X_tsne[:, 0], X_tsne[:, 1], s=100)
plt.xlabel("t-SNE Dimension 1")
plt.ylabel("t-SNE Dimension 2")
plt.title("t-SNE Projection")
plt.show()
Ejercicio 4: UMAP para Reducción de Dimensionalidad
Tarea: Utiliza UMAP para reducir la dimensionalidad de un conjunto de datos con cuatro características a dos dimensiones. Visualiza la proyección 2D de UMAP.
Solución:
import umap
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
# Data: 4 features
X = np.array([[3.1, 2.0, 3.8, 4.0],
[1.9, 1.5, 3.1, 2.3],
[2.8, 3.0, 1.5, 3.8],
[3.4, 2.9, 2.7, 3.5],
[2.1, 1.8, 2.9, 2.6]])
# Standardize the data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Apply UMAP to reduce to 2 dimensions
umap_model = umap.UMAP(n_neighbors=5, min_dist=0.3, random_state=42)
X_umap = umap_model.fit_transform(X_scaled)
# Plot the 2D UMAP projection
plt.scatter(X_umap[:, 0], X_umap[:, 1], s=100)
plt.xlabel("UMAP Dimension 1")
plt.ylabel("UMAP Dimension 2")
plt.title("UMAP Projection")
plt.show()
Ejercicio 5: Evaluación de Agrupamiento con Silhouette Score
Tarea: Aplica el agrupamiento K-Means al siguiente conjunto de datos y calcula el Silhouette Score para evaluar el rendimiento del agrupamiento.
Solución:
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
import numpy as np
# Data: Features 1 and 2
X = np.array([[2.5, 3.5], [3.1, 2.9], [1.8, 2.7], [4.2, 3.6], [3.5, 4.0],
[1.9, 3.3], [4.5, 3.2], [2.0, 2.8]])
# Apply K-Means clustering with 3 clusters
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
labels = kmeans.labels_
# Calculate the Silhouette Score
silhouette_avg = silhouette_score(X, labels)
print(f"Silhouette Score: {silhouette_avg:.2f}")
Ejercicio 6: Evaluación de la Reducción de Dimensionalidad con Varianza Explicada
Tarea: Aplica PCA para reducir el siguiente conjunto de datos de cinco características a tres componentes. Calcula y grafica la proporción de varianza explicada para cada componente.
Solución:
from sklearn.decomposition import PCA
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
# Data: 5 features
X = np.array([[2.5, 3.1, 2.8, 4.0, 2.1],
[3.0, 2.7, 1.9, 2.8, 3.6],
[1.9, 2.3, 3.7, 3.4, 2.9],
[4.2, 3.6, 4.1, 2.9, 3.5],
[3.6, 4.0, 2.9, 2.2, 3.0]])
# Standardize the data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Apply PCA to reduce to 3 components
pca = PCA(n_components=3)
pca.fit(X_scaled)
# Plot the explained variance ratio for each component
explained_variance = pca.explained_variance_ratio_
plt.bar(range(1, 4), explained_variance, tick_label=["PC1", "PC2", "PC3"])
plt.xlabel("Principal Components")
plt.ylabel("Explained Variance Ratio")
plt.title("Explained Variance by Principal Components")
plt.show()
Estos ejercicios prácticos presentan una variedad de técnicas de aprendizaje no supervisado, que incluyen agrupamiento, reducción de dimensionalidad y métricas de evaluación. Cada ejercicio refuerza conceptos clave del Capítulo 5, ofreciéndote experiencia práctica en la implementación y evaluación de estos métodos poderosos.
Ejercicios Prácticos del Capítulo 5
Ejercicio 1: Agrupamiento K-Means
Tarea: Se te proporciona un conjunto de datos sintético que contiene dos características. Utiliza el agrupamiento K-Means para agrupar los datos en tres grupos y visualiza los grupos con sus centroides.
Solución:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# Data: Features 1 and 2
X = np.array([[2.5, 3.1], [1.8, 2.3], [3.4, 3.0], [4.1, 4.2], [1.9, 2.8],
[3.6, 3.7], [2.2, 3.5], [4.0, 4.5]])
# Apply K-Means clustering with 3 clusters
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
# Get cluster labels and centroids
labels = kmeans.labels_
centroids = kmeans.cluster_centers_
# Plot the clusters and centroids
plt.scatter(X[:, 0], X[:, 1], c=labels, s=50, cmap='viridis')
plt.scatter(centroids[:, 0], centroids[:, 1], s=200, c='red', marker='x')
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.title("K-Means Clustering")
plt.show()
Ejercicio 2: Reducción de Dimensionalidad con PCA
Tarea: Tienes un conjunto de datos con cinco características. Utiliza el Análisis de Componentes Principales (PCA) para reducir la dimensionalidad a dos componentes y visualizar la proyección 2D de los datos.
Solución:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
# Data: 5 features
X = np.array([[2.5, 1.2, 3.4, 0.8, 1.5],
[1.9, 2.1, 1.8, 2.3, 0.7],
[3.1, 2.5, 2.2, 1.8, 2.0],
[2.2, 3.4, 2.9, 3.1, 1.8],
[4.5, 4.0, 3.5, 2.9, 2.7]])
# Standardize the data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Apply PCA to reduce to 2 components
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
# Plot the 2D projection
plt.scatter(X_pca[:, 0], X_pca[:, 1], s=100)
plt.xlabel("Principal Component 1")
plt.ylabel("Principal Component 2")
plt.title("PCA Projection")
plt.show()
Ejercicio 3: t-SNE para Reducción de Dimensionalidad
Tarea: Utiliza t-SNE para reducir la dimensionalidad de un conjunto de datos con tres características a dos dimensiones. Visualiza la proyección 2D de t-SNE.
Solución:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
from sklearn.preprocessing import StandardScaler
# Data: 3 features
X = np.array([[2.1, 3.2, 1.1],
[1.8, 2.5, 3.6],
[3.0, 3.1, 1.5],
[2.5, 2.9, 0.8],
[1.9, 2.4, 3.2]])
# Standardize the data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Apply t-SNE to reduce to 2 dimensions
tsne = TSNE(n_components=2, random_state=42)
X_tsne = tsne.fit_transform(X_scaled)
# Plot the 2D t-SNE projection
plt.scatter(X_tsne[:, 0], X_tsne[:, 1], s=100)
plt.xlabel("t-SNE Dimension 1")
plt.ylabel("t-SNE Dimension 2")
plt.title("t-SNE Projection")
plt.show()
Ejercicio 4: UMAP para Reducción de Dimensionalidad
Tarea: Utiliza UMAP para reducir la dimensionalidad de un conjunto de datos con cuatro características a dos dimensiones. Visualiza la proyección 2D de UMAP.
Solución:
import umap
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
# Data: 4 features
X = np.array([[3.1, 2.0, 3.8, 4.0],
[1.9, 1.5, 3.1, 2.3],
[2.8, 3.0, 1.5, 3.8],
[3.4, 2.9, 2.7, 3.5],
[2.1, 1.8, 2.9, 2.6]])
# Standardize the data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Apply UMAP to reduce to 2 dimensions
umap_model = umap.UMAP(n_neighbors=5, min_dist=0.3, random_state=42)
X_umap = umap_model.fit_transform(X_scaled)
# Plot the 2D UMAP projection
plt.scatter(X_umap[:, 0], X_umap[:, 1], s=100)
plt.xlabel("UMAP Dimension 1")
plt.ylabel("UMAP Dimension 2")
plt.title("UMAP Projection")
plt.show()
Ejercicio 5: Evaluación de Agrupamiento con Silhouette Score
Tarea: Aplica el agrupamiento K-Means al siguiente conjunto de datos y calcula el Silhouette Score para evaluar el rendimiento del agrupamiento.
Solución:
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
import numpy as np
# Data: Features 1 and 2
X = np.array([[2.5, 3.5], [3.1, 2.9], [1.8, 2.7], [4.2, 3.6], [3.5, 4.0],
[1.9, 3.3], [4.5, 3.2], [2.0, 2.8]])
# Apply K-Means clustering with 3 clusters
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
labels = kmeans.labels_
# Calculate the Silhouette Score
silhouette_avg = silhouette_score(X, labels)
print(f"Silhouette Score: {silhouette_avg:.2f}")
Ejercicio 6: Evaluación de la Reducción de Dimensionalidad con Varianza Explicada
Tarea: Aplica PCA para reducir el siguiente conjunto de datos de cinco características a tres componentes. Calcula y grafica la proporción de varianza explicada para cada componente.
Solución:
from sklearn.decomposition import PCA
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
# Data: 5 features
X = np.array([[2.5, 3.1, 2.8, 4.0, 2.1],
[3.0, 2.7, 1.9, 2.8, 3.6],
[1.9, 2.3, 3.7, 3.4, 2.9],
[4.2, 3.6, 4.1, 2.9, 3.5],
[3.6, 4.0, 2.9, 2.2, 3.0]])
# Standardize the data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Apply PCA to reduce to 3 components
pca = PCA(n_components=3)
pca.fit(X_scaled)
# Plot the explained variance ratio for each component
explained_variance = pca.explained_variance_ratio_
plt.bar(range(1, 4), explained_variance, tick_label=["PC1", "PC2", "PC3"])
plt.xlabel("Principal Components")
plt.ylabel("Explained Variance Ratio")
plt.title("Explained Variance by Principal Components")
plt.show()
Estos ejercicios prácticos presentan una variedad de técnicas de aprendizaje no supervisado, que incluyen agrupamiento, reducción de dimensionalidad y métricas de evaluación. Cada ejercicio refuerza conceptos clave del Capítulo 5, ofreciéndote experiencia práctica en la implementación y evaluación de estos métodos poderosos.