Menu iconMenu icon
Aprendizaje automático con Python

Capítulo 5: Aprendizaje No Supervisado

5.4 Ejercicios Prácticos

Ejercicio 1: Agrupamiento con K-Means

Utilizando el conjunto de datos Iris disponible en Scikit-learn, realiza un agrupamiento con K-Means utilizando un número de grupos establecido en 3. Después de realizar el agrupamiento, visualiza los grupos en un gráfico de dispersión.

Ejemplo:

from sklearn.cluster import KMeans
from sklearn import datasets
import matplotlib.pyplot as plt

# Load the Iris dataset
iris = datasets.load_iris()
X = iris.data

# Perform K-Means clustering
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)

# Visualize the clusters
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_, cmap='viridis')  # Adjust the cmap for better visualization
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.title('K-Means Clustering of Iris Dataset')
plt.show()

Ejercicio 2: Agrupamiento Jerárquico

Utilizando el mismo conjunto de datos Iris, realiza un agrupamiento jerárquico. Visualiza los grupos utilizando un dendrograma.

Ejemplo:

import numpy as np
from sklearn.cluster import AgglomerativeClustering
from scipy.cluster.hierarchy import dendrogram
import matplotlib.pyplot as plt

# Perform Hierarchical clustering
agg_clustering = AgglomerativeClustering(n_clusters=3).fit(X)

# Plot the dendrogram
children = agg_clustering.children_
distance = np.arange(children.shape[0])
no_of_observations = np.arange(2, children.shape[0] + 2)
linkage_matrix = np.column_stack([children, distance, no_of_observations]).astype(float)
dendrogram(linkage_matrix, p=3, truncate_mode='level')
plt.show()

Ejercicio 3: DBSCAN

Nuevamente, utilizando el conjunto de datos Iris, realiza un agrupamiento DBSCAN. Experimenta con diferentes valores de eps y min_samples para ver cómo afectan a los grupos.

Ejemplo:

from sklearn.cluster import DBSCAN
import matplotlib.pyplot as plt

# Perform DBSCAN clustering
dbscan = DBSCAN(eps=0.5, min_samples=5).fit(X)

# Visualize the clusters
plt.scatter(X[:, 0], X[:, 1], c=dbscan.labels_, cmap='viridis')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('DBSCAN Clustering')
plt.colorbar(label='Cluster Label')
plt.show()

Ejercicio 4: PCA

Realiza PCA en el conjunto de datos Iris y reduce las dimensiones a dos. Luego, visualiza los datos reducidos en un gráfico de dispersión. ¿Cuánta varianza capturan los dos primeros componentes principales?

Ejemplo:

from sklearn.decomposition import PCA

# Perform PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

# Visualize the reduced data
plt.scatter(X_pca[:, 0], X_pca[:, 1])
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.title('PCA Visualization')
plt.show()

Ejercicio 5: t-SNE

Realiza t-SNE en el conjunto de datos Iris y reduce las dimensiones a dos. Luego, visualiza los datos reducidos en un gráfico de dispersión. ¿Cómo se compara esta visualización con la de PCA?

Ejercicio 6: Métricas de Evaluación

Calcula el puntaje de silueta (silhouette score) y el índice Davies-Bouldin para los grupos obtenidos mediante K-Means, Agrupamiento Jerárquico y DBSCAN. ¿Qué algoritmo de agrupamiento obtuvo el mejor rendimiento según estas métricas?

Recuerda que el objetivo de estos ejercicios no es solo obtener respuestas correctas, sino entender el proceso y aprender de él. No dudes en experimentar y probar diferentes enfoques. ¡Feliz aprendizaje!

5.4 Ejercicios Prácticos

Ejercicio 1: Agrupamiento con K-Means

Utilizando el conjunto de datos Iris disponible en Scikit-learn, realiza un agrupamiento con K-Means utilizando un número de grupos establecido en 3. Después de realizar el agrupamiento, visualiza los grupos en un gráfico de dispersión.

Ejemplo:

from sklearn.cluster import KMeans
from sklearn import datasets
import matplotlib.pyplot as plt

# Load the Iris dataset
iris = datasets.load_iris()
X = iris.data

# Perform K-Means clustering
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)

# Visualize the clusters
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_, cmap='viridis')  # Adjust the cmap for better visualization
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.title('K-Means Clustering of Iris Dataset')
plt.show()

Ejercicio 2: Agrupamiento Jerárquico

Utilizando el mismo conjunto de datos Iris, realiza un agrupamiento jerárquico. Visualiza los grupos utilizando un dendrograma.

Ejemplo:

import numpy as np
from sklearn.cluster import AgglomerativeClustering
from scipy.cluster.hierarchy import dendrogram
import matplotlib.pyplot as plt

# Perform Hierarchical clustering
agg_clustering = AgglomerativeClustering(n_clusters=3).fit(X)

# Plot the dendrogram
children = agg_clustering.children_
distance = np.arange(children.shape[0])
no_of_observations = np.arange(2, children.shape[0] + 2)
linkage_matrix = np.column_stack([children, distance, no_of_observations]).astype(float)
dendrogram(linkage_matrix, p=3, truncate_mode='level')
plt.show()

Ejercicio 3: DBSCAN

Nuevamente, utilizando el conjunto de datos Iris, realiza un agrupamiento DBSCAN. Experimenta con diferentes valores de eps y min_samples para ver cómo afectan a los grupos.

Ejemplo:

from sklearn.cluster import DBSCAN
import matplotlib.pyplot as plt

# Perform DBSCAN clustering
dbscan = DBSCAN(eps=0.5, min_samples=5).fit(X)

# Visualize the clusters
plt.scatter(X[:, 0], X[:, 1], c=dbscan.labels_, cmap='viridis')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('DBSCAN Clustering')
plt.colorbar(label='Cluster Label')
plt.show()

Ejercicio 4: PCA

Realiza PCA en el conjunto de datos Iris y reduce las dimensiones a dos. Luego, visualiza los datos reducidos en un gráfico de dispersión. ¿Cuánta varianza capturan los dos primeros componentes principales?

Ejemplo:

from sklearn.decomposition import PCA

# Perform PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

# Visualize the reduced data
plt.scatter(X_pca[:, 0], X_pca[:, 1])
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.title('PCA Visualization')
plt.show()

Ejercicio 5: t-SNE

Realiza t-SNE en el conjunto de datos Iris y reduce las dimensiones a dos. Luego, visualiza los datos reducidos en un gráfico de dispersión. ¿Cómo se compara esta visualización con la de PCA?

Ejercicio 6: Métricas de Evaluación

Calcula el puntaje de silueta (silhouette score) y el índice Davies-Bouldin para los grupos obtenidos mediante K-Means, Agrupamiento Jerárquico y DBSCAN. ¿Qué algoritmo de agrupamiento obtuvo el mejor rendimiento según estas métricas?

Recuerda que el objetivo de estos ejercicios no es solo obtener respuestas correctas, sino entender el proceso y aprender de él. No dudes en experimentar y probar diferentes enfoques. ¡Feliz aprendizaje!

5.4 Ejercicios Prácticos

Ejercicio 1: Agrupamiento con K-Means

Utilizando el conjunto de datos Iris disponible en Scikit-learn, realiza un agrupamiento con K-Means utilizando un número de grupos establecido en 3. Después de realizar el agrupamiento, visualiza los grupos en un gráfico de dispersión.

Ejemplo:

from sklearn.cluster import KMeans
from sklearn import datasets
import matplotlib.pyplot as plt

# Load the Iris dataset
iris = datasets.load_iris()
X = iris.data

# Perform K-Means clustering
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)

# Visualize the clusters
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_, cmap='viridis')  # Adjust the cmap for better visualization
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.title('K-Means Clustering of Iris Dataset')
plt.show()

Ejercicio 2: Agrupamiento Jerárquico

Utilizando el mismo conjunto de datos Iris, realiza un agrupamiento jerárquico. Visualiza los grupos utilizando un dendrograma.

Ejemplo:

import numpy as np
from sklearn.cluster import AgglomerativeClustering
from scipy.cluster.hierarchy import dendrogram
import matplotlib.pyplot as plt

# Perform Hierarchical clustering
agg_clustering = AgglomerativeClustering(n_clusters=3).fit(X)

# Plot the dendrogram
children = agg_clustering.children_
distance = np.arange(children.shape[0])
no_of_observations = np.arange(2, children.shape[0] + 2)
linkage_matrix = np.column_stack([children, distance, no_of_observations]).astype(float)
dendrogram(linkage_matrix, p=3, truncate_mode='level')
plt.show()

Ejercicio 3: DBSCAN

Nuevamente, utilizando el conjunto de datos Iris, realiza un agrupamiento DBSCAN. Experimenta con diferentes valores de eps y min_samples para ver cómo afectan a los grupos.

Ejemplo:

from sklearn.cluster import DBSCAN
import matplotlib.pyplot as plt

# Perform DBSCAN clustering
dbscan = DBSCAN(eps=0.5, min_samples=5).fit(X)

# Visualize the clusters
plt.scatter(X[:, 0], X[:, 1], c=dbscan.labels_, cmap='viridis')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('DBSCAN Clustering')
plt.colorbar(label='Cluster Label')
plt.show()

Ejercicio 4: PCA

Realiza PCA en el conjunto de datos Iris y reduce las dimensiones a dos. Luego, visualiza los datos reducidos en un gráfico de dispersión. ¿Cuánta varianza capturan los dos primeros componentes principales?

Ejemplo:

from sklearn.decomposition import PCA

# Perform PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

# Visualize the reduced data
plt.scatter(X_pca[:, 0], X_pca[:, 1])
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.title('PCA Visualization')
plt.show()

Ejercicio 5: t-SNE

Realiza t-SNE en el conjunto de datos Iris y reduce las dimensiones a dos. Luego, visualiza los datos reducidos en un gráfico de dispersión. ¿Cómo se compara esta visualización con la de PCA?

Ejercicio 6: Métricas de Evaluación

Calcula el puntaje de silueta (silhouette score) y el índice Davies-Bouldin para los grupos obtenidos mediante K-Means, Agrupamiento Jerárquico y DBSCAN. ¿Qué algoritmo de agrupamiento obtuvo el mejor rendimiento según estas métricas?

Recuerda que el objetivo de estos ejercicios no es solo obtener respuestas correctas, sino entender el proceso y aprender de él. No dudes en experimentar y probar diferentes enfoques. ¡Feliz aprendizaje!

5.4 Ejercicios Prácticos

Ejercicio 1: Agrupamiento con K-Means

Utilizando el conjunto de datos Iris disponible en Scikit-learn, realiza un agrupamiento con K-Means utilizando un número de grupos establecido en 3. Después de realizar el agrupamiento, visualiza los grupos en un gráfico de dispersión.

Ejemplo:

from sklearn.cluster import KMeans
from sklearn import datasets
import matplotlib.pyplot as plt

# Load the Iris dataset
iris = datasets.load_iris()
X = iris.data

# Perform K-Means clustering
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)

# Visualize the clusters
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_, cmap='viridis')  # Adjust the cmap for better visualization
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.title('K-Means Clustering of Iris Dataset')
plt.show()

Ejercicio 2: Agrupamiento Jerárquico

Utilizando el mismo conjunto de datos Iris, realiza un agrupamiento jerárquico. Visualiza los grupos utilizando un dendrograma.

Ejemplo:

import numpy as np
from sklearn.cluster import AgglomerativeClustering
from scipy.cluster.hierarchy import dendrogram
import matplotlib.pyplot as plt

# Perform Hierarchical clustering
agg_clustering = AgglomerativeClustering(n_clusters=3).fit(X)

# Plot the dendrogram
children = agg_clustering.children_
distance = np.arange(children.shape[0])
no_of_observations = np.arange(2, children.shape[0] + 2)
linkage_matrix = np.column_stack([children, distance, no_of_observations]).astype(float)
dendrogram(linkage_matrix, p=3, truncate_mode='level')
plt.show()

Ejercicio 3: DBSCAN

Nuevamente, utilizando el conjunto de datos Iris, realiza un agrupamiento DBSCAN. Experimenta con diferentes valores de eps y min_samples para ver cómo afectan a los grupos.

Ejemplo:

from sklearn.cluster import DBSCAN
import matplotlib.pyplot as plt

# Perform DBSCAN clustering
dbscan = DBSCAN(eps=0.5, min_samples=5).fit(X)

# Visualize the clusters
plt.scatter(X[:, 0], X[:, 1], c=dbscan.labels_, cmap='viridis')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('DBSCAN Clustering')
plt.colorbar(label='Cluster Label')
plt.show()

Ejercicio 4: PCA

Realiza PCA en el conjunto de datos Iris y reduce las dimensiones a dos. Luego, visualiza los datos reducidos en un gráfico de dispersión. ¿Cuánta varianza capturan los dos primeros componentes principales?

Ejemplo:

from sklearn.decomposition import PCA

# Perform PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

# Visualize the reduced data
plt.scatter(X_pca[:, 0], X_pca[:, 1])
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.title('PCA Visualization')
plt.show()

Ejercicio 5: t-SNE

Realiza t-SNE en el conjunto de datos Iris y reduce las dimensiones a dos. Luego, visualiza los datos reducidos en un gráfico de dispersión. ¿Cómo se compara esta visualización con la de PCA?

Ejercicio 6: Métricas de Evaluación

Calcula el puntaje de silueta (silhouette score) y el índice Davies-Bouldin para los grupos obtenidos mediante K-Means, Agrupamiento Jerárquico y DBSCAN. ¿Qué algoritmo de agrupamiento obtuvo el mejor rendimiento según estas métricas?

Recuerda que el objetivo de estos ejercicios no es solo obtener respuestas correctas, sino entender el proceso y aprender de él. No dudes en experimentar y probar diferentes enfoques. ¡Feliz aprendizaje!