sklearn.neighbors.NearestNeighbors

class sklearn.neighbors.NearestNeighbors

Aprendiz no supervisado para implementar búsquedas de vecinos.

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

Nuevo en la versión 0.9.

Parámetros
n_neighborsentero, default=5

Número de vecinos a utilizar por defecto para las consultas kneighbors.

radiusflotante, default=1.0

Rango del espacio de parámetros a usar por defecto para consultas radius_neighbors.

algorithm{“auto”, “ball_tree”, “kd_tree”, “brute”}, default=”auto”

Algoritmo usado para calcular los vecinos más cercanos:

  • “ball_tree” usará BallTree

  • “kd_tree” usará KDTree

  • “brute” usará una búsqueda de fuerza bruta.

  • “auto” intentará decidir el algoritmo más apropiado basado en los valores pasados al método fit.

Nota: el ajuste en la entrada dispersa anulará el ajuste de este parámetro, utilizando la fuerza bruta.

leaf_sizeentero, default=30

Tamaño de hoja pasado a BallTree o KDTree. Esto puede afectar la velocidad de la construcción y la consulta, así como la memoria necesaria para almacenar el árbol. El valor óptimo depende de la naturaleza del problema.

metriccadena de caracteres o invocable, default=»minkowski”

la métrica de distancia a utilizar para el árbol. La métrica predeterminada es minkowski, y con p=2 es equivalente a la métrica Euclideana estándar. Ver la documentación de DistanceMetric para una lista de métricas disponibles. Si la métrica es «precomputed», se asume que X es una matriz de distancias y debe ser cuadrada durante el ajuste. X puede ser un grafo disperso, en cuyo caso sólo elementos «distintos de cero» pueden ser considerados vecinos.

pentero, default=2

Parámetro para la métrica de Minkowski de sklearn.metrics.pairwise.pairwise_distances. Cuando p = 1, esto es equivalente a usar manhattan_distance (l1), y euclidean_distance (l2) para p = 2. Para p arbitrario, se utiliza minkowski_distance (l_p).

metric_paramsdiccionario, default=None

Argumentos adicionales de palabras clave para la función métrica.

n_jobsentero, default=None

El número de trabajos paralelos a ejecutar para la búsqueda de vecinos. None significa 1 a menos que esté en un contexto joblib.parallel_backend. -1 significa usar todos los procesadores. Consulta Glosario para más detalles.

Atributos
effective_metric_cadena

Métrica utilizada para calcular las distancias a los vecinos.

effective_metric_params_dict

Parámetros para la métrica utilizada para calcular las distancias a los vecinos.

n_samples_fit_entero

Número de muestras en los datos ajustados.

Notas

Ver Nearest Neighbors en la documentación en línea para una discusión sobre la elección del algorithm y el leaf_size.

https://https://es.wikipedia.org/wiki/K_vecinos_m%C3%A1s_pr%C3%B3ximos

Ejemplos

>>> import numpy as np
>>> from sklearn.neighbors import NearestNeighbors
>>> samples = [[0, 0, 2], [1, 0, 0], [0, 0, 1]]
>>> neigh = NearestNeighbors(n_neighbors=2, radius=0.4)
>>> neigh.fit(samples)
NearestNeighbors(...)
>>> neigh.kneighbors([[0, 0, 1.3]], 2, return_distance=False)
array([[2, 0]]...)
>>> nbrs = neigh.radius_neighbors(
...    [[0, 0, 1.3]], 0.4, return_distance=False
... )
>>> np.asarray(nbrs[0][0])
array(2)

Métodos

fit

Ajusta al estimador de vecinos más cercano del conjunto de datos de entrenamiento.

get_params

Obtiene los parámetros para este estimador.

kneighbors

Encuentra a los K-vecinos de un punto.

kneighbors_graph

Calcula el grafo (ponderado) de k-vecinos para los puntos de X

radius_neighbors

Encuentra a los vecinos dentro de un radio determinado de un punto o puntos.

radius_neighbors_graph

Calcula el grafo (ponderado) de k-vecinos para los puntos de X

set_params

Establece los parámetros de este estimador.

fit()

Ajusta al estimador de vecinos más cercano del conjunto de datos de entrenamiento.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features) o (n_samples, n_samples) si metric=”precomputed”

Datos de entrenamiento.

yIgnorado

No se utiliza, está presente para la coherencia de la API por convención.

Devuelve
selfNearestNeighbors

El estimador de vecinos más cercanos ajustado.

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 subobjetos contenidos que son estimadores.

Devuelve
paramsdict

Nombres de parámetros mapeados a sus valores.

kneighbors()

Encuentra a los K-vecinos de un punto.

Devuelve los índices y las distancias a los vecinos de cada punto.

Parámetros
Xarray-like, forma (n_queries, n_features), o (n_queries, n_indexed) si metric == “precomputed”, default=None

El punto o puntos de la consulta. Si no se proporciona, se devuelven los vecinos de cada punto indexado. En este caso, el punto de consulta no se considera su propio vecino.

n_neighborsentero, default=None

Número de vecinos necesarios para cada muestra. El valor predeterminado es el que se pasa al constructor.

return_distancebooleano, default=True

Si se devuelven o no las distancias.

Devuelve
neigh_distndarray de forma (n_queries, n_neighbors)

Un arreglo que representa las longitudes de los puntos, sólo presente si return_distance=True

neigh_indndarray de forma (n_queries, n_neighbors)

Indices de los puntos más cercanos en la matriz de la población.

Ejemplos

En el siguiente ejemplo, construimos una clase NearestNeighbors a partir de un arreglo que representa nuestro conjunto de datos y preguntamos cuál es el punto más cercano a [1,1,1]

>>> samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]]
>>> from sklearn.neighbors import NearestNeighbors
>>> neigh = NearestNeighbors(n_neighbors=1)
>>> neigh.fit(samples)
NearestNeighbors(n_neighbors=1)
>>> print(neigh.kneighbors([[1., 1., 1.]]))
(array([[0.5]]), array([[2]]))

Como puedes ver, devuelve [[0.5]], y [[2]], lo que significa que el elemento está a la distancia 0.5 y es el tercer elemento de las muestras (los índices empiezan en 0). También puedes consultar varios puntos:

>>> X = [[0., 1., 0.], [1., 0., 1.]]
>>> neigh.kneighbors(X, return_distance=False)
array([[1],
       [2]]...)
kneighbors_graph()

Calcula el grafo (ponderado) de k-vecinos para los puntos de X

Parámetros
Xarray-like de forma (n_queries, n_features), o (n_queries, n_indexed) si metric == “precomputed”, default=None

El punto o puntos de la consulta. Si no se proporciona, se devuelven los vecinos de cada punto indexado. En este caso, el punto de consulta no se considera su propio vecino. Para metric='precomputed' la forma debe ser (n_queries, n_indexed). En caso contrario, la forma debe ser (n_queries, n_features).

n_neighborsentero, default=None

Número de vecinos para cada muestra. El valor predeterminado es el que se pasa al constructor.

mode{“connectivity”, “distance”}, default=”connectivity”

Tipo de matriz devuelta: “connectivity” devolverá la matriz de conectividad con unos y ceros, en “distance” los bordes son la distancia euclidiana entre puntos.

Devuelve
Amatriz dispersa de forma (n_queries, n_samples_fit)

n_samples_fit es el número de muestras en los datos ajustados A[i, j] se asigna la ponderación del borde que conecta i con j. La matriz tiene el formato CSR.

Ejemplos

>>> X = [[0], [3], [1]]
>>> from sklearn.neighbors import NearestNeighbors
>>> neigh = NearestNeighbors(n_neighbors=2)
>>> neigh.fit(X)
NearestNeighbors(n_neighbors=2)
>>> A = neigh.kneighbors_graph(X)
>>> A.toarray()
array([[1., 0., 1.],
       [0., 1., 1.],
       [1., 0., 1.]])
radius_neighbors()

Encuentra a los vecinos dentro de un radio determinado de un punto o puntos.

Devuelve los índices y distancias de cada punto del conjunto de datos que se encuentra en una bola con el tamaño radius alrededor de los puntos del arreglo de consultas. Los puntos en el límite están incluidos en los resultados.

Los puntos de resultado no necesariamente están ordenados por distancia a su punto de consulta.

Parámetros
Xarray-like de (n_samples, n_features), default=None

El punto o puntos de la consulta. Si no se proporciona, se devuelven los vecinos de cada punto indexado. En este caso, el punto de consulta no se considera su propio vecino.

radiusflotante, default=None

Limitando la distancia de vecinos a devolver. El valor predeterminado es pasado al constructor.

return_distancebooleano, default=True

Si se devuelven o no las distancias.

sort_resultsbooleano, default=False

Si es True, las distancias e índices serán ordenados antes de ser devueltos. Si es False, los resultados no se ordenarán. Si return_distance=False, al establecer sort_results=True se producirá un error.

Nuevo en la versión 0.22.

Devuelve
neigh_distndarray de forma (n_samples,) de arreglos

Arreglo que representa las distancias a cada punto, sólo presente si return_distance=True. Los valores de la distancia se calculan según el parámetro del constructor metric.

neigh_indndarray de forma (n_samples,) de arreglos

Un arreglo de arreglos de los puntos más cercanos aproximados de la matriz de población que se encuentran dentro de una bola de tamaño radius alrededor de los puntos de la consulta.

Notas

Porque el número de vecinos de cada punto no es necesariamente igual, los resultados para múltiples puntos de consulta no pueden caber en un arreglo de datos estándar. Para la eficiencia, radius_neighbors devuelve arreglo de objetos, donde cada objeto es un arreglo 1D de índices o distancias.

Ejemplos

En el siguiente ejemplo, construimos una clase NeighborsClassifier a partir de un arreglo que representa nuestro conjunto de datos y preguntamos cuál es el punto más cercano a [1,1,1]:

>>> import numpy as np
>>> samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]]
>>> from sklearn.neighbors import NearestNeighbors
>>> neigh = NearestNeighbors(radius=1.6)
>>> neigh.fit(samples)
NearestNeighbors(radius=1.6)
>>> rng = neigh.radius_neighbors([[1., 1., 1.]])
>>> print(np.asarray(rng[0][0]))
[1.5 0.5]
>>> print(np.asarray(rng[1][0]))
[1 2]

El primer arreglo devuelto contiene las distancias a todos los puntos más cercanos a 1.6, mientras que el segundo arreglo devuelto contiene sus índices. En general, se pueden consultar varios puntos al mismo tiempo.

radius_neighbors_graph()

Calcula el grafo (ponderado) de k-vecinos para los puntos de X

Los vecindarios son los puntos restringidos a una distancia inferior al radio.

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

El punto o puntos de la consulta. Si no se proporciona, se devuelven los vecinos de cada punto indexado. En este caso, el punto de consulta no se considera su propio vecino.

radiusflotante, default=None

Radio de los vecindarios. El valor predeterminado es pasado al constructor.

mode{“connectivity”, “distance”}, default=”connectivity”

Tipo de matriz devuelta: “connectivity” devolverá la matriz de conectividad con unos y ceros, en “distance” los bordes son la distancia euclidiana entre puntos.

sort_resultsbooleano, default=False

Si es True, en cada fila del resultado, las entradas que no sean de cero se ordenarán aumentando las distancias. Si es False, las entradas que no sean de cero no pueden ser ordenadas. Sólo se utiliza con mode=”distance”.

Nuevo en la versión 0.22.

Devuelve
Amatriz dispersa de forma (n_queries, n_samples_fit)

n_samples_fit es el número de muestras en los datos especificados A[i, j] se le asigna la ponderación de borde que conecta i a j. La matriz si de formato CSR.

Ver también

kneighbors_graph

Ejemplos

>>> X = [[0], [3], [1]]
>>> from sklearn.neighbors import NearestNeighbors
>>> neigh = NearestNeighbors(radius=1.5)
>>> neigh.fit(X)
NearestNeighbors(radius=1.5)
>>> A = neigh.radius_neighbors_graph(X)
>>> A.toarray()
array([[1., 0., 1.],
       [0., 1., 0.],
       [1., 0., 1.]])
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.