在 sklearn 文档中,函数 KNeighborsClassifier 的参数weights="distance"
解释如下:
“ 距离”:权重点与其距离的倒数。在这种情况下,查询点的近邻将具有更大的 影响力要远于相距较远的邻居。
虽然对我来说加权相邻点是有意义的,然后将预测作为加权点的平均值进行计算,例如使用 KNeighborsRegressor ...。但是,我看不到分类中如何使用加权算法。根据《统计学习的要素》一书,KNN分类基于多数票。不是吗?
答案 0 :(得分:1)
在分类期间,将在计算邻居的模式时使用权重(而不是频率,将使用权重的总和来计算模式)。
要了解有关实际实现的更多信息,请参见here。
documentation中的示例:
>>> 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]))
您可以查看实现here