sklearn.random_projection.SparseRandomProjection

class sklearn.random_projection.SparseRandomProjection

Reduce la dimensionalidad mediante la proyección aleatoria dispersa.

La matriz aleatoria dispersa es una alternativa a la matriz de proyección aleatoria densa que garantiza una calidad de inserción(embedding) similar a la vez que es mucho más eficiente en términos de memoria y permite un cálculo más rápido de los datos proyectados.

Si observamos s = 1 / density los componentes de la matriz aleatoria se extraen de:

  • -sqrt(s) / sqrt(n_components) con probabilidad 1 / 2s

  • 0 con probabilidad 1 - 1 / s

  • +sqrt(s) / sqrt(n_components) con probabilidad 1 / 2s

Más información en el Manual de usuario.

Nuevo en la versión 0.13.

Parámetros
n_componentsint o “auto”, default=”auto”

Dimensionalidad del espacio de proyección objetivo.

n_components puede ajustarse automáticamente según el número de muestras del conjunto de datos y el límite dado por el lema de Johnson-Lindenstrauss. En ese caso, la calidad de la inserción se controla con el parámetro eps.

Hay que tener en cuenta que el lema de Johnson-Lindenstrauss puede producir una estimación muy conservadora del número de componentes necesarios, ya que no hace ninguna suposición sobre la estructura del conjunto de datos.

densityfloat o “auto”, default=”auto”

Razón en el rango (0, 1] del componente distinto de cero en la matriz de proyección aleatoria.

Si density = “auto”, el valor se establece en la densidad mínima recomendada por Ping Li et al: 1 / sqrt(n_features).

Utiliza density = 1 / 3,0 si deseas reproducir los resultados de Achlioptas, 2001.

epsfloat, default=0.1

Parámetro para controlar la calidad de la inserción según el lema de Johnson-Lindenstrauss cuando n_components se establece en “auto”. Este valor debe ser estrictamente positivo.

Los valores más pequeños conducen a una mejor inserción y a un mayor número de dimensiones (n_components) en el espacio de proyección objetivo.

dense_outputbool, default=False

Si es True, asegura que la salida de la proyección aleatoria es un arreglo numpy denso incluso si la matriz de entrada y la de proyección aleatoria son ambas dispersas. En la práctica, si el número de componentes es pequeño, el número de componentes cero en los datos proyectados será muy pequeño y será más eficiente para la CPU y la memoria utilizar una representación densa.

Si es False, los datos proyectados utilizan una representación dispersa si la entrada es dispersa.

random_stateentero, instancia de RandomState o None, default=None

Controla el generador de números pseudoaleatorios utilizado para generar la matriz de proyección en el momento del ajuste. Pase un int para una salida reproducible a través de múltiples llamadas a la función. Ver Glosario.

Atributos
n_components_int

Número concreto de componentes calculado cuando n_components=»auto».

components_matriz dispersa de forma (n_components, n_features)

Matriz aleatoria utilizada para la proyección. La matriz dispersa tendrá el formato CSR.

density_float en el rango 0.0 - 1.0

Densidad concreta calculada cuando density = «auto».

Referencias

1

Ping Li, T. Hastie y K. W. Church, 2006, «Very Sparse Random Projections». https://web.stanford.edu/~hastie/Papers/Ping/KDD06_rp.pdf

2

D. Achlioptas, 2001, «Database-friendly random projections», https://users.soe.ucsc.edu/~optas/papers/jl.pdf

Ejemplos

>>> import numpy as np
>>> from sklearn.random_projection import SparseRandomProjection
>>> rng = np.random.RandomState(42)
>>> X = rng.rand(100, 10000)
>>> transformer = SparseRandomProjection(random_state=rng)
>>> X_new = transformer.fit_transform(X)
>>> X_new.shape
(100, 3947)
>>> # very few components are non-zero
>>> np.mean(transformer.components_ != 0)
0.0100...

Métodos

fit

Genera una matriz de proyección aleatoria dispersa.

fit_transform

Ajusta los datos y luego los transforma.

get_params

Obtiene los parámetros para este estimador.

set_params

Establece los parámetros de este estimador.

transform

Proyecta los datos mediante el producto de matrices con la matriz aleatoria

fit()

Genera una matriz de proyección aleatoria dispersa.

Parámetros
X{ndarray, sparse matrix} de forma (n_samples, n_features)

Conjunto de entrenamiento: sólo se utiliza shape para encontrar las dimensiones óptimas de la matriz aleatoria basándose en la teoría referida en los artículos mencionados anteriormente.

y

Ignorado

Devuelve
self
fit_transform()

Ajusta los datos y luego los transforma.

Ajusta el transformador a X e y con los parámetros opcionales fit_params y devuelve una versión transformada de X.

Parámetros
Xarray-like de forma (n_samples, n_features)

Muestras de entrada.

yarray-like de forma (n_samples,) o (n_samples, n_outputs), default=None

Valores objetivo (None para transformaciones no supervisadas).

**fit_paramsdict

Parámetros de ajuste adicionales.

Devuelve
X_newarreglo ndarray de forma (n_samples, n_features_new)

Arreglo transformado.

get_params()

Obtiene los parámetros para este estimador.

Parámetros
deepbool, default=True

Si es True, devolverá los parámetros para este estimador y los subobjetos contenidos que son estimadores.

Devuelve
paramsdict

Nombres de parámetros mapeados a sus valores.

set_params()

Establece los parámetros de este estimador.

El método funciona tanto con estimadores simples como en objetos anidados (como Pipeline). Estos últimos tienen parámetros de la forma <component>__<parameter> para que sea posible actualizar cada componente de un objeto anidado.

Parámetros
**paramsdict

Parámetros del estimador.

Devuelve
selfinstancia del estimador

Instancia del estimador.

transform()

Proyecta los datos mediante el producto de matrices con la matriz aleatoria

Parámetros
X{ndarray, sparse matrix} de forma (n_samples, n_features)

Los datos de entrada para proyectar en un espacio de menor dimensión.

Devuelve
X_new{ndarray, sparse matrix} de forma (n_samples, n_components)

Arreglo proyectado.

Ejemplos utilizando sklearn.random_projection.SparseRandomProjection