Как параметр «веса» используется в KNeighborsClassifier? - PullRequest
1 голос
/ 28 июня 2019

В документации sklearn параметр weights="distance" функции KNeighborsClassifier объясняется следующим образом:

расстояние ’: вес указывает на обратное значение их расстояния. в этом случае более близкие соседи точки запроса будут иметь больший влияние, чем соседи, которые находятся дальше.

Хотя для меня имеет смысл взвесить соседние точки и затем рассчитать прогноз как среднее значение для взвешенных точек, например, используя KNeighborsRegressor ... Однако я не могу видеть, как вес используется в алгоритмах классификации , Согласно книге Элементы статистического обучения , классификация КНН основана на большинстве голосов. Не правда ли?

1 Ответ

1 голос
/ 28 июня 2019

Во время классификации весы будут использоваться при расчете режима соседей (вместо частоты сумма весов будет использоваться для расчета режима).

Чтобы узнать больше деталей, посмотрите здесь , для фактической реализации.

Примеры из документации :

>>> 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]))

Вы можете посмотреть реализацию здесь

...