sklearn.neighbors.KNeighborsRegressor

class sklearn.neighbors.KNeighborsRegressor

Regresión basada en los vecinos más cercanos.

El objetivo se predice mediante la interpolación local de los objetivos asociados a los vecinos más cercanos en el conjunto de entrenamiento.

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.

weights{“uniform”, “distance”} o invocable, 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.

Las ponderaciones uniformes se utilizan por defecto.

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

Algoritmo usado para calcular los vecinos más cercanos:

  • “ball_tree” will use BallTree

  • “kd_tree” will use 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.

pentero, 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 carectares 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_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. Ver Glosario para más detalles. No afecta al método fit.

Atributos
effective_metric_cadena o invocable

La métrica de distancia a utilizar. Será igual que el parámetro metric o un sinónimo de él, por ejemplo, “euclidean” si el parámetro metric se establece en “minkowski” y el parámetro p 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ámetro p si el atributo effective_metric_ se establece como minkowski.

n_samples_fit_int

Número de muestras en los datos ajustados.

Notas

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

Advertencia

En cuanto a los algoritmos de Vecinos más cercanos, si se encuentra que dos vecinos, vecino k+1 y k, 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 KNeighborsRegressor
>>> neigh = KNeighborsRegressor(n_neighbors=2)
>>> neigh.fit(X, y)
KNeighborsRegressor(...)
>>> print(neigh.predict([[1.5]]))
[0.5]

Métodos

fit

Ajustar el regresor de k- vecinos más cercanos 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

predict

Predice el objetivo para los datos proporcionados

score

Devuelve el coeficiente de determinación \(R^2\) de la predicción.

set_params

Establece los parámetros de este estimador.

fit()

Ajustar el regresor de k- vecinos más cercanos 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
selfKNeighborsRegressor

El regresor de los k 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 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_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 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_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” 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 ajustados A[i, j] se asigna el peso de la arista 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.]])
predict()

Predice el objetivo 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), dtype=int

Valores objetivo.

score()

Devuelve el coeficiente de determinación \(R^2\) de la predicción.

El coeficiente \(R^2\) se define como \((1 - \frac{u}{v})\), donde \(u\) es la suma de cuadrados de los residuos ((y_true - y_pred) ** 2).sum() y \(v\) es la suma total de cuadrados ((y_true - y_true.mean()) ** 2).sum(). La mejor puntuación posible es 1.0 y puede ser negativa (porque el modelo puede ser arbitrariamente peor). Un modelo constante que siempre predice el valor esperado de y, sin tener en cuenta las características de entrada, obtendría una puntuación \(R^2\) de 0.0.

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

Muestras de prueba. Para algunos estimadores puede ser una matriz núcleo precalculada o una lista de objetos genéricos en su lugar con forma (n_samples, n_samples_fitted), donde n_samples_fitted es el número de muestras utilizadas en el ajuste para el estimador.

yarray-like de forma (n_samples,) o (n_samples, n_outputs)

Valores verdaderos para X.

sample_weightarray-like de forma (n_samples,), default=None

Ponderaciones de la muestra.

Devuelve
scorefloat

\(R^2\) de self.predict(X) con respecto a y.

Notas

La puntuación \(R^2\) utilizada al invocar a score en un regresor utiliza multioutput='uniform_average' desde la versión 0.23 para mantener la consistencia con el valor predeterminado de r2_score. Esto influye en el método score de todos los regresores de salida múltiple (excepto para MultiOutputRegressor).

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.

Ejemplos usando sklearn.neighbors.KNeighborsRegressor