En Sklearn Documentación, el parámetro weights="distance" de la función kneighborsclassifier se explica de la siguiente manera:

' distancia ': puntos de peso 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 que están más lejos.

Si bien tiene sentido para mí responder a los puntos vecinos y luego calcular la predicción como media de puntos ponderados, por ejemplo, usando kneighborsregressor ... Sin embargo, no puedo ver cómo se usa el peso en algoritmos de clasificación. Según el libro los elementos del aprendizaje estadístico , la clasificación de KNN se basa en la mayoría de los votos. ¿No es así?

1
Fadoua 28 jun. 2019 a las 04:17

1 respuesta

La mejor respuesta

Durante la clasificación, los pesos se utilizarían al calcular el modo de vecinos (en lugar de la frecuencia, la suma de los pesos se utilizaría para calcular el modo).

Para conocer más detalles de look aquí, para la implementación real.

Ejemplos de Documentación :

>>> from sklearn.utils.extmath import weighted_mode
>>> x = [4, 1, 4, 2, 4, 2]
>>> weights = [1, 1, 1, 1, 1, 1]
>>> weighted_mode(x, weights)
(array([4.]), array([3.]))
The value 4 appears three times: with uniform weights, the result is simply the mode of the distribution.

>>>
>>> weights = [1, 3, 0.5, 1.5, 1, 2]  # deweight the 4's
>>> weighted_mode(x, weights)
(array([2.]), array([3.5]))

Puede ver la implementación aquí

1
Venkatachalam 28 jun. 2019 a las 06:51