sklearn.neighbors.NeighborhoodComponentsAnalysis

class sklearn.neighbors.NeighborhoodComponentsAnalysis

Análisis de componentes del vecindario

El análisis de Componentes del Vecindario (Neighborhood Component Analysis, NCA) es un algoritmo de aprendizaje automático para el aprendizaje métrico. Aprende una transformación lineal de forma supervisada para mejorar la precisión de la clasificación de una regla estocástica de vecinos más cercanos en el espacio transformado.

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

Parámetros
n_componentsentero, default=None

Dimensionalidad preferida del espacio proyectado. Si es None se establecerá en n_features.

init{“auto”, “pca”, “lda”, “identity”, “random”} o ndarray de la forma (n_features_a, n_features_b), default=”auto”

Inicialización de la transformación lineal. Las opciones posibles son “auto”, “pca”, “lda”, “identity”, “random” y una matriz numérica de forma (n_features_a, n_features_b).

“auto”

Dependiendo de n_components, la inicialización más razonable será elegida. Si n_components <= n_classes usamos “lda”, ya que usa información de etiquetas. Si no, pero n_components < min(n_features, n_samples), usamos “pca”, ya que proyecta datos en direcciones significativas (aquellas de mayor varianza). De lo contrario, sólo utilizaremos la «identity».

“pca”

Los componentes principales n_components de las entradas pasadas a fit serán usados para inicializar la transformación. (Ver PCA)

“lda”

min(n_components, n_classes) los componentes más discriminativos de las entradas pasadas a fit serán usados para inicializar la transformación. (Si n_components > n_classes, el resto de los componentes serán cero.) (Ver LinearDiscriminantAnalysis)

“identity”

Si n_components es estrictamente menor que la dimensionalidad de las entradas pasadas a fit, la matriz de identidad será truncada a las primeras filas n_components.

“random”

La transformación inicial será un arreglo aleatorio de forma (n_components, n_features). Cada valor es muestreado de la distribución normal estándar.

arreglo numpy

n_features_b debe coincidir con la dimensionalidad de las entradas pasadas a fit y n_features_a debe ser menor o igual a eso. Si n_components no es None, n_features_a debe coincidirlo.

warm_startbooleano, default=False

Si es True y fit ha sido llamado antes, la solución de la llamada anterior a fit se utiliza como la transformación lineal inicial (n_components e init serán ignorados).

max_iterentero, default=50

Número máximo de iteraciones en la optimización.

tolflotante, default=1e-5

Tolerancia de conversión para la optimización.

callbackinvocable, default=None

Si no es None, esta función es llamada después de cada iteración del optimizador, tomando como argumentos la solución actual (matriz de transformación aplanada) y el número de iteraciones. Esto puede ser útil en caso de que uno quiera examinar o almacenar la transformación encontrada después de cada iteración.

verboseentero, default=0

Si es 0, no se imprimirán mensajes de progreso. Si es 1, los mensajes de progreso se imprimirán en stdout. Si > 1, los mensajes de progreso se imprimirán y el parámetro disp de scipy.optimize.minimize se establecerá en verbose - 2.

random_stateentero o numpy.Randomstate, default=None

Un objeto generador de números pseudoaleatorios o una semilla para él si es int. Si init='random', random_state se utiliza para inicializar la transformación aleatoria. Si init='pca', random_state se pasa como argumento a PCA cuando se inicializa la transformación. Pasa un entero para obtener resultados reproducibles a través de múltiples llamadas a la función. Ver :term: Glosario <random_state>.

Atributos
components_ndarray de forma (n_components, n_features)

La transformación lineal aprendida durante el ajuste.

n_iter_entero

Cuenta el número de iteraciones realizadas por el optimizador.

random_state_numpy.RandomState

Objeto generador de números pseudoaleatorio utilizado durante la inicialización.

Referencias

1

J. Goldberger, G. Hinton, S. Roweis, R. Salakhutdinov. «Neighbourhood Components Analysis». Advances in Neural Information Processing Systems. 17, 513-520, 2005. http://www.cs.nyu.edu/~roweis/papers/ncanips.pdf

2

Entrada de Wikipedia sobre el Análisis de Componentes del Vecindario https://en.wikipedia.org/wiki/Neighbourhood_components_analysis

Ejemplos

>>> from sklearn.neighbors import NeighborhoodComponentsAnalysis
>>> from sklearn.neighbors import KNeighborsClassifier
>>> from sklearn.datasets import load_iris
>>> from sklearn.model_selection import train_test_split
>>> X, y = load_iris(return_X_y=True)
>>> X_train, X_test, y_train, y_test = train_test_split(X, y,
... stratify=y, test_size=0.7, random_state=42)
>>> nca = NeighborhoodComponentsAnalysis(random_state=42)
>>> nca.fit(X_train, y_train)
NeighborhoodComponentsAnalysis(...)
>>> knn = KNeighborsClassifier(n_neighbors=3)
>>> knn.fit(X_train, y_train)
KNeighborsClassifier(...)
>>> print(knn.score(X_test, y_test))
0.933333...
>>> knn.fit(nca.transform(X_train), y_train)
KNeighborsClassifier(...)
>>> print(knn.score(nca.transform(X_test), y_test))
0.961904...

Métodos

fit

Ajusta el modelo de acuerdo a los datos de entrenamiento dados.

fit_transform

Se ajustan los datos y luego se transforman.

get_params

Obtiene los parámetros de este estimador.

set_params

Establece los parámetros de este estimador.

transform

Se aplica la transformación aprendida a los datos dados.

fit()

Ajusta el modelo de acuerdo a los datos de entrenamiento dados.

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

Las muestras de entrenamiento.

yarray-like de forma (n_samples,)

Las etiquetas de entrenamiento correspondientes.

Devuelve
selfobjeto

devuelve un modelo de NeighborhoodComponentsAnalysis entrenado.

fit_transform()

Se ajustan los datos y luego se transforman.

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

Parámetros
Xarray-like de forma (n_samples_X, 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 de este estimador.

Parámetros
deepbooleano, 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 de estimador.

transform()

Se aplica la transformación aprendida a los datos dados.

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

Muestras de datos.

Devuelve
X_embedded: ndarray de forma (n_samples, n_components)

Las muestras de datos transformadas.

Plantea
NotFittedError

Si fit no ha sido llamado antes.

Ejemplos con sklearn.neighbors.NeighborhoodComponentsAnalysis