sklearn.neighbors
.KNeighborsClassifier¶
- class sklearn.neighbors.KNeighborsClassifier¶
Clasificador que implementa el voto de k- vecinos más cercanos.
Más información en el Manual de usuario.
- Parámetros
- n_neighborsint, default=5
Número de vecinos a utilizar por defecto para las consultas
kneighbors
.- weights{“uniform”, “distance”} or callable, default=”uniform”
función de ponderación utilizada en la predicción. Valores posibles:
“uniform” : ponderaciones uniformes. Todos los puntos de cada vecindario se ponderan por igual.
“distance” : ponderar los puntos por la inversa de su distancia. en este caso, los vecinos más cercanos de un punto de consulta tendrán una mayor influencia que los vecinos más alejados.
[callable] : una función definida por el usuario que acepta un arreglo de distancias, y devuelve un arreglo de la misma forma que contiene las ponderaciones.
- algorithm{“auto”, “ball_tree”, “kd_tree”, “brute”}, default=”auto”
Algoritmo usado para calcular los vecinos más cercanos:
“ball_tree” will usa
BallTree
“kd_tree” will usa
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_sizeint, 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.
- pint, default=2
Parámetro de potencia para la métrica de Minkowski. Cuando p = 1, esto equivale a utilizar manhattan_distance (l1), y euclidean_distance (l2) para p = 2. Para p arbitrario, se utiliza minkowski_distance (l_p).
- 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.- metric_paramsdict, default=None
Argumentos adicionales de palabras clave para la función métrica.
- n_jobsint, 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 contextojoblib.parallel_backend
.-1
significa usar todos los procesadores. Ver Glosario para más detalles. No afecta al métodofit
.
- Atributos
- classes_arreglo de forma (n_classes,)
Etiquetas de clase conocidas por el clasificador
- effective_metric_str o invocable
La métrica de distancia utilizada. Será la misma que el parámetro
metric
o un sinónimo de ésta, por ejemplo, “euclidean” si el parámetrometric
se establece en “minkowski” y el parámetrop
se establece en 2.- effective_metric_params_dict
Argumentos adicionales para la función métrica. Para la mayoría de las métricas será lo mismo que el parámetro
metric_params
, pero también puede contener el valor del parámetrop
si el atributoeffective_metric_
se establece comominkowski
.- n_samples_fit_int
Número de muestras en los datos ajustados.
- outputs_2d_bool
False cuando la forma de
y
es (n_samples, ) o (n_samples, 1) durante el ajuste, de lo contrario True.
Notas
Ver Nearest Neighbors en la documentación online para una discusión sobre la elección del
algorithm
y elleaf_size
.Advertencia
En cuanto a los algoritmos de Vecinos más cercanos, si se encuentra que dos vecinos, vecino
k+1
yk
, tienen distancias idénticas pero etiquetas diferentes, los resultados dependerán del orden de los datos de entrenamiento.https://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm
Ejemplos
>>> X = [[0], [1], [2], [3]] >>> y = [0, 0, 1, 1] >>> from sklearn.neighbors import KNeighborsClassifier >>> neigh = KNeighborsClassifier(n_neighbors=3) >>> neigh.fit(X, y) KNeighborsClassifier(...) >>> print(neigh.predict([[1.1]])) [0] >>> print(neigh.predict_proba([[0.9]])) [[0.66666667 0.33333333]]
Métodos
Ajustar el clasificador de k-próximos a partir del conjunto de datos de entrenamiento.
Obtiene los parámetros para este estimador.
Encuentra a los K-vecinos de un punto.
Calcula el grafo (ponderado) de k-vecinos para los puntos de X
Predice las etiquetas de la clase para los datos proporcionados.
Devuelve las estimaciones de probabilidad para los datos de prueba X.
Devuelve la precisión media en los datos de prueba y las etiquetas dados.
Establece los parámetros de este estimador.
- fit()¶
Ajustar el clasificador de k-próximos a partir 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 del entrenamiento.
- y{array-like, sparse matrix} de forma (n_samples,) o (n_samples, n_outputs)
Valores objetivo.
- Devuelve
- selfKNeighborsClassifier
Clasificador de vecinos-k-más cercano.
- 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 sub objetos 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_neighborsint, default=None
Número de vecinos necesarios para cada muestra. El valor predeterminado es el que se pasa al constructor.
- return_distancebool, 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 puede 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_neighborsint, 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” las aristas 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 ajustadosA[i, j]
se asigna el peso de la arista que conectai
conj
. La matriz tiene el formato CSR.
Ver también
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.]])
- predict()¶
Predice las etiquetas de la clase para los datos proporcionados.
- Parámetros
- Xarray-like de forma (n_queries, n_features), o (n_queries, n_indexed) si metric == “precomputed”
Muestras de prueba.
- Devuelve
- yndarray de forma (n_queries,) o (n_queries, n_outputs)
Etiquetas de clase para cada muestra de datos.
- predict_proba()¶
Devuelve las estimaciones de probabilidad para los datos de prueba X.
- Parámetros
- Xarray-like de forma (n_queries, n_features), o (n_queries, n_indexed) si metric == “precomputed”
Muestras de prueba.
- Devuelve
- pndarray de forma (n_queries, n_classes), o una lista de n_outputs
de dichas matrices si n_outputs > 1. Las probabilidades de clase de las muestras de entrada. Las clases se ordenan por orden lexicográfico.
- score()¶
Devuelve la precisión media en los datos de prueba y las etiquetas dados.
En la clasificación multietiqueta, se trata de la precisión del subconjunto, que es una métrica rigurosa, ya que se requiere para cada muestra que cada conjunto de etiquetas sea predicho correctamente.
- Parámetros
- Xarray-like de forma (n_samples, n_features)
Muestras de prueba.
- yarray-like de forma (n_samples,) or (n_samples, n_outputs)
Etiquetas verdaderas (True) para
X
.- sample_weightarray-like de forma (n_samples,), default=None
Ponderaciones de muestra.
- Devuelve
- scorefloat
Precisión media de
self.predict(X)
con respecto ay
.
- 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 de estimador
Instancia de estimador.