Reducción de dimensionalidad por proyección aleatoria

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

En este laboratorio, exploraremos la proyección aleatoria en la reducción de dimensionalidad utilizando la biblioteca scikit-learn. La proyección aleatoria es una técnica que se puede utilizar para reducir la dimensionalidad de los datos mientras se preservan las distancias entre pares de muestras. Esto puede ser útil para acelerar los cálculos y reducir el uso de memoria en los algoritmos de aprendizaje automático.

Consejos sobre la VM

Una vez que se haya iniciado 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 las 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 sus comentarios después de la sesión y lo resolveremos rápidamente para usted.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-71133{{"Reducción de dimensionalidad por proyección aleatoria"}} end

Importar las bibliotecas necesarias

Comencemos importando las bibliotecas necesarias para este laboratorio.

import numpy as np
from sklearn import random_projection

Generar datos aleatorios

A continuación, generemos algunos datos aleatorios que podamos utilizar para la reducción de dimensionalidad.

X = np.random.rand(100, 10000)

Aquí, generamos una matriz bidimensional X con 100 muestras y 10.000 características. Esto será nuestro original conjunto de datos de alta dimensionalidad.

Proyección aleatoria gaussiana

Ahora, apliquemos la proyección aleatoria gaussiana para reducir la dimensionalidad de nuestros datos.

transformer = random_projection.GaussianRandomProjection()
X_new = transformer.fit_transform(X)

En este paso, creamos una instancia de la clase GaussianRandomProjection y la ajustamos a nuestros datos X. Luego, aplicamos la transformación llamando al método fit_transform. El resultado se almacena en la variable X_new.

Proyección aleatoria dispersa

A continuación, probemos otro tipo de proyección aleatoria llamada proyección aleatoria dispersa.

transformer = random_projection.SparseRandomProjection()
X_new = transformer.fit_transform(X)

Aquí, creamos una instancia de la clase SparseRandomProjection y la aplicamos a nuestros datos X utilizando el método fit_transform. El resultado se almacena en la variable X_new.

Transformada inversa

Los transformadores de proyección aleatoria tienen la opción de calcular la inversa de la matriz de proyección. Exploraremos esta característica aplicando la transformada inversa a nuestros datos proyectados.

transformer = random_projection.SparseRandomProjection(compute_inverse_components=True)
X_new = transformer.fit_transform(X)

## Compute the inverse transform
X_new_inversed = transformer.inverse_transform(X_new)

En este paso, creamos una instancia de la clase SparseRandomProjection con el parámetro compute_inverse_components establecido en True. Luego, ajustamos el transformador a nuestros datos X y aplicamos la transformación. Finalmente, calculamos la transformada inversa llamando al método inverse_transform en los datos proyectados X_new.

Verificación

Para verificar la corrección de la transformada inversa, podemos comparar los datos originales X con el resultado de la transformada inversa.

X_new_again = transformer.transform(X_new_inversed)
np.allclose(X_new, X_new_again)

Aquí, aplicamos la transformación a los datos transformados inversamente X_new_inversed y comprobamos si es igual a los datos proyectados originales X_new utilizando la función np.allclose.

Resumen

En este laboratorio, aprendimos cómo realizar la proyección aleatoria para la reducción de dimensionalidad utilizando la biblioteca scikit-learn. Exploramos tanto la técnica de proyección aleatoria gaussiana como la de proyección aleatoria dispersa. También aprendimos cómo calcular la transformada inversa de los datos proyectados para recuperar los datos originales. La proyección aleatoria puede ser una herramienta útil para reducir la dimensionalidad de datos de alta dimensionalidad en tareas de aprendizaje automático.