Aglomeración de Características para Datos de Alta Dimensión

Machine LearningMachine LearningBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/DataPreprocessingandFeatureEngineeringGroup(["Data Preprocessing and Feature Engineering"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/feature_extraction("Feature Extraction") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/feature_extraction -.-> lab-49105{{"Aglomeración de Características para Datos de Alta Dimensión"}} ml/sklearn -.-> lab-49105{{"Aglomeración de Características para Datos de Alta Dimensión"}} end

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.