如何在KNeighborsClassifier中使用参数“权重”?

时间:2019-06-28 01:17:23

标签: python machine-learning scikit-learn knn

sklearn 文档中,函数 KNeighborsClassifier 的参数weights="distance"解释如下:

  

距离”:权重点与其距离的倒数。在这种情况下,查询点的近邻将具有更大的   影响力要远于相距较远的邻居。

虽然对我来说加权相邻点是有意义的,然后将预测作为加权点的平均值进行计算,例如使用 KNeighborsRegressor ...。但是,我看不到分类中如何使用加权算法。根据《统计学习的要素》一书,KNN分类基于多数票。不是吗?

1 个答案:

答案 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