sklearn.manifold.TSNE

class sklearn.manifold.TSNE

Embedding Estocástico de Vecinos distribuido en t (t-EEV, o t-SNE en inglés).

t-SNE [1] es una herramienta para visualizar datos de alta dimensión. Convierte similitudes entre los puntos de datos a probabilidades conjuntas e intenta minimizar la divergencia Kullback-Leibler entre las probabilidades conjuntas del embedding de bajas dimensiones y los datos de alta dimensión. t-SNE tiene una función de coste que no es convexa, es decir, con diferentes inicializaciones podemos obtener diferentes resultados.

Es altamente recomendable utilizar otro método de reducción de dimensionalidad (por ejemplo, PCA para datos densos o TruncatedSVD para datos dispersos) para reducir el número de dimensiones a una cantidad razonable (por ejemplo, 50) si el número de características es muy alto. Esto eliminará algo de ruido y acelerará el cálculo de distancias entre pares de muestras. Para obtener más consejos consulta las FAQ (preguntas frecuentes) de Laurens van der Maaten [2].

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

Parámetros
n_componentsentero, default=2

Dimensión del espacio incrustado.

perplexityflotante, default=30.0

La perplejidad está relacionada con el número de vecinos más cercanos que se utiliza en otros algoritmos de aprendizaje múltiples. Los conjuntos de datos más grandes generalmente requieren una perplejidad mayor. Considere seleccionar un valor entre 5 y 50. Los valores diferentes pueden dar resultados significativamente diferentes.

early_exaggerationflotante, default=12.0

Controla que tan estrechos son los conglomerados naturales del espacio original en el espacio incrustado y cuánto espacio habrá entre ellos. Para valores más grandes, el espacio entre los conglomerados naturales será mayor en el espacio incrustado. De nuevo, la elección de este parámetro no es muy crítica. Si la función de coste aumenta durante la optimización inicial, el factor de exageración temprana o la tasa de aprendizaje podrían ser demasiado altos.

learning_rateflotante, default=200.0

La tasa de aprendizaje para t-SNE suele estar en el rango [10.0, 1000.0]. Si la tasa de aprendizaje es demasiado alta, los datos pueden parecer un “balón” con cualquier punto aproximadamente equidistante de sus vecinos más cercanos. Si la tasa de aprendizaje es demasiado baja, la mayoría de los puntos pueden parecer comprimidos en una nube densa, con pocos atípicos. Si la función de costo se atasca en un mal mínimo local aumentar la tasa de aprendizaje puede ayudar.

n_iterentero, default=1000

Número máximo de iteraciones para la optimización. Debe ser al menos 250.

n_iter_without_progressentero, default=300

Número máximo de iteraciones sin progreso antes de abortar la optimización, usada después de 250 iteraciones iniciales con exageración temprana. Tenga en cuenta que el progreso sólo se comprueba cada 50 iteraciones, así que este valor se redondea al siguiente múltiplo de 50.

Nuevo en la versión 0.17: parámetro n_iter_without_progress para controlar los criterios de parada.

min_grad_normflotante, default=1e-7

Si la norma de gradiente está por debajo de este umbral, la optimización se detendrá.

metriccadena o invocable, default=”euclidean”

La métrica a utilizar cuando se calcula la distancia entre instancias en un arreglo de características. Si la métrica es una cadena de caracteres, debe ser una de las opciones permitidas por scipy.spatial.distance.pdist para su parámetro de métrica, o una métrica listada en pairwise.PAIRWISE_DISTANCE_FUNCTIONS. Si metric es «precomputed», se asume que X es una matriz de distancia. Alternativamente, si la métrica es una función invocable, se llama a cada par de instancias (filas) y se registra el valor resultante. El invocable debe tomar dos arreglos de X como entrada y devolver un valor que indique la distancia entre ellos. El valor predeterminado es «euclidean», que es interpretado como la distancia euclidiana cuadrática.

init{“random”, “pca”} o ndarray de la forma (n_samples, n_components), default=”random”

Inicialización de la incrustación. Las opciones posibles son “random”, “pca” y un arreglo numpy de forma (n_samples, n_components). La inicialización PCA no se puede utilizar con distancias precalculadas y es generalmente más estable globalmente que la inicialización aleatoria.

verboseentero, default=0

Nivel de verbosidad.

random_stateentero, instancia de RandomState o None, default=None

Determina el generador de números aleatorios. Pasa un int para resultados reproducibles a través de múltiples llamadas de funciones. Ten en cuenta que diferentes inicializaciones pueden resultar en diferentes mínimos locales de la función de costo. Ver :term: Glosario <random_state>.

methodstr, default=”barnes_hut”

Por defecto, el algoritmo de cálculo de gradiente usa la aproximación de Barnes-Hut ejecutándose en el tiempo O(NlogN). method=”exact” se ejecutará en el algoritmo más lento, pero exacto en el tiempo O(N^2). El algoritmo exacto debe utilizarse cuando los errores cercanos al vecino necesitan ser mejores que el 3%. Sin embargo, el método exacto no puede escalar a millones de ejemplos.

Nuevo en la versión 0.17: Método de optimización de aproximados a través del Barnes-Hut.

angleflotante, default=0.5

Sólo se utiliza si method=”barnes_hut” Este es el intercambio entre velocidad y precisión para Barnes-Hut T-SNE. “angle” es el tamaño angular (denominado theta en [3]) de un nodo distante medido desde un punto. Si este tamaño está por debajo de “angle”, entonces se utiliza como un nodo resumen de todos los puntos contenidos en él. Este método no es muy sensible a los cambios en este parámetro en el rango de 0. - 0.8. Ángulos inferiores a 0.2 aumentan rápidamente el tiempo de cálculo y ángulos mayores a 0.8 aumentan rápidamente el error.

n_jobsentero, default=None

El número de trabajos que se ejecutan en paralelo para la busqueda de vecinos. Este parámetro no tiene impacto cuando metric="precomputed" o (metric="euclidean" y method=»exact»). ``None significa 1 a menos que esté en un contexto joblib.parallel_backend. -1 significa que se utilizan todos los procesadores. Ver Glosario para más detalles.

Nuevo en la versión 0.22.

square_distancesTrue o “legacy”, default=”legacy”

Si TSNE debe calcular los cuadrados para los valores de distancia. 'legacy' significa que los valores de distancia son cuadrados sólo cuando metric="euclidean". True significa que los valores de distancia son cuadrados para todas las métricas.

Nuevo en la versión 0.24: Añadido para proporcionar compatibilidad hacia atrás durante la obsolescencia del comportamiento de cuadrados heredado.

Obsoleto desde la versión 0.24: El comportamiento de cuadrado de legado fue obsoleto en 0.24. El valor 'legacy' se eliminará en 1.1. (renombrado en 0.26), por lo que el valor predeterminado cambiará a True.

Atributos
embedding_array-like de forma (n_samples, n_components)

Almacena los vectores de embedding.

kl_divergence_flotante

Divergencia Kullback-Leibler después de la optimización.

n_iter_entero

Número de iteraciones realizadas.

Referencias

[1] van der Maaten, L.J.P.; Hinton, G.E. Visualizing High-Dimensional Data

Using t-SNE. Journal of Machine Learning Research 9:2579-2605, 2008.

[2] van der Maaten, L.J.P. t-Distributed Stochastic Neighbor Embedding

https://lvdmaaten.github.io/tsne/

[3] L.J.P. van der Maaten. Accelerating t-SNE using Tree-Based Algorithms.

Journal of Machine Learning Research 15(Oct):3221-3245, 2014. https://lvdmaaten.github.io/publications/papers/JMLR_2014.pdf

Ejemplos

>>> import numpy as np
>>> from sklearn.manifold import TSNE
>>> X = np.array([[0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]])
>>> X_embedded = TSNE(n_components=2).fit_transform(X)
>>> X_embedded.shape
(4, 2)

Métodos

fit

Ajusta X en un espacio incrustado.

fit_transform

Ajusta a X dentro de un espacio incrustado y devuelve esa salida transformada.

get_params

Obtiene los parámetros para este estimador.

set_params

Establece los parámetros de este estimador.

fit()

Ajusta X en un espacio incrustado.

Parámetros
Xndarray de forma (n_samples, n_features) o (n_samples, n_samples)

Si la metrica es “precomputed” X debe ser una matriz de distancia cuadrática. De lo contrario contiene una muestra por fila. Si el método es “exact”, X podría ser una matriz dispersa de tipo “csr”, “csc” o “coo”. Si el método es “barnes_hut” y la métrica es “precomputed”, X podría ser un gráfico disperso precalculado.

yIgnorado
fit_transform()

Ajusta a X dentro de un espacio incrustado y devuelve esa salida transformada.

Parámetros
Xndarray de forma (n_samples, n_features) o (n_samples, n_samples)

Si la metrica es “precomputed” X debe ser una matriz de distancia cuadrática. De lo contrario contiene una muestra por fila. Si el método es “exact”, X podría ser una matriz dispersa de tipo “csr”, “csc” o “coo”. Si el método es “barnes_hut” y la métrica es “precomputed”, X podría ser un gráfico disperso precalculado.

yIgnorado
Devuelve
X_newndarray de forma (n_samples, n_components)

Incrustación de los datos de entrenamiento en un espacio de baja dimensión.

get_params()

Obtiene los parámetros para este estimador.

Parámetros
deepbooleano, default=True

Si es True, devolverá los parámetros para este estimador y los sub objetos 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 con 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.

Ejemplos usando sklearn.manifold.TSNE