Introducción
Este tutorial demostrará cómo usar la aglomeración de características para fusionar características similares en un conjunto de datos. La aglomeración de características es útil cuando se trabaja con conjuntos de datos de alta dimensión al reducir el número de características mientras se conserva la información más importante.
Consejos sobre la VM
Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.
A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje su retroalimentación después de la sesión y lo resolveremos rápidamente para usted.
Importar bibliotecas
En este paso, importaremos las bibliotecas necesarias para realizar la aglomeración de características.
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets, cluster
from sklearn.feature_extraction.image import grid_to_graph
Cargar el conjunto de datos
En este paso, cargaremos el conjunto de datos de dígitos de scikit-learn. Este conjunto de datos contiene imágenes de dígitos manuscritos del 0 al 9.
digits = datasets.load_digits()
images = digits.images
X = np.reshape(images, (len(images), -1))
Definir la matriz de conectividad
En este paso, definiremos la matriz de conectividad utilizando la función grid_to_graph de scikit-learn. Esta función crea un gráfico de conectividad basado en la cuadrícula de píxeles de las imágenes.
connectivity = grid_to_graph(*images[0].shape)
Realizar la aglomeración de características
En este paso, realizaremos la aglomeración de características utilizando la clase FeatureAgglomeration de scikit-learn. Estableceremos el número de clusters en 32.
agglo = cluster.FeatureAgglomeration(connectivity=connectivity, n_clusters=32)
agglo.fit(X)
X_reduced = agglo.transform(X)
Transformada inversa
En este paso, realizaremos una transformada inversa en el conjunto de datos reducido para restaurar el número original de características.
X_restored = agglo.inverse_transform(X_reduced)
images_restored = np.reshape(X_restored, images.shape)
Visualizar los resultados
En este paso, visualizaremos las imágenes originales, las imágenes aglomeradas y las etiquetas asignadas a cada cluster.
plt.figure(1, figsize=(4, 3.5))
plt.clf()
plt.subplots_adjust(left=0.01, right=0.99, bottom=0.01, top=0.91)
for i in range(4):
plt.subplot(3, 4, i + 1)
plt.imshow(images[i], cmap=plt.cm.gray, vmax=16, interpolation="nearest")
plt.xticks(())
plt.yticks(())
if i == 1:
plt.title("Original data")
plt.subplot(3, 4, 4 + i + 1)
plt.imshow(images_restored[i], cmap=plt.cm.gray, vmax=16, interpolation="nearest")
if i == 1:
plt.title("Agglomerated data")
plt.xticks(())
plt.yticks(())
plt.subplot(3, 4, 10)
plt.imshow(
np.reshape(agglo.labels_, images[0].shape),
interpolation="nearest",
cmap=plt.cm.nipy_spectral,
)
plt.xticks(())
plt.yticks(())
plt.title("Labels")
plt.show()
Resumen
En este tutorial, hemos aprendido cómo utilizar la aglomeración de características para fusionar características similares en un conjunto de datos. Al reducir el número de características, podemos mejorar el rendimiento de los algoritmos de aprendizaje automático mientras preservamos la información más importante en el conjunto de datos.