Python 对于K的偶数值和平局,预测的KNN等级是什么?

Python 对于K的偶数值和平局,预测的KNN等级是什么?,python,machine-learning,scikit-learn,knn,Python,Machine Learning,Scikit Learn,Knn,在KNN K最近邻分类器中,如果选择了偶数K值,那么在多数投票规则或欧几里德距离规则中的预测结果会是什么。例如,如果有3个类 刚毛鸢尾 花色鸢尾 弗吉尼亚鸢尾 现在假设n_的值等于6。多数投票规则有相当多的机会获得平局结果?在大多数可视化中,该区域用白色表示,表示无法做出任何决定。但对平局的实际预测是什么呢。这个问题很难模拟,而且相当概念化,因此可能不太容易模拟 n_neights的奇数值是否也能解决/减少此问题?你认为欧几里德/曼哈顿距离比简单多数投票更能解决这个问题吗。然而,他根本没有提到这

在KNN K最近邻分类器中,如果选择了偶数K值,那么在多数投票规则或欧几里德距离规则中的预测结果会是什么。例如,如果有3个类

刚毛鸢尾 花色鸢尾 弗吉尼亚鸢尾 现在假设n_的值等于6。多数投票规则有相当多的机会获得平局结果?在大多数可视化中,该区域用白色表示,表示无法做出任何决定。但对平局的实际预测是什么呢。这个问题很难模拟,而且相当概念化,因此可能不太容易模拟


n_neights的奇数值是否也能解决/减少此问题?你认为欧几里德/曼哈顿距离比简单多数投票更能解决这个问题吗。然而,他根本没有提到这一点

因为您使用的是多数投票,所以当两个类标签获得相同分数时,为最近邻选择奇数值可以解决问题。

经过一些挖掘,我有了一些好的答案。首先让我告诉你们,正如@anasvaf这样的一些用户所提到的,你们应该只使用奇数进行二进制分类。这绝对不是事实。首先,当我们使用多数投票进行二元分类时,在某种程度上,选择操作完全取决于实际库。例如,在scikit learn中,它采用变量的模式。这意味着,如果在训练数据集中,类1的数据点数量更多,则在tie上使用1。但有一个更好的解决办法

我们可以使用加权KNN代替正常KNN。在加权KNN中,如果存在平局,我们可以看到1个标记数据点与k点和0个标记点之间的总距离。如果1的总距离大于0,则类将为0,反之亦然


还有其他一些很好的技术可以处理KNN中的tie,但老实说,KNN不是一个好的学习算法,特别是因为它在大型数据集上的时间空间复杂性。

不过,您应该使用奇数个n_邻居,比如n_邻居=5,以避免tie。如果不想使用多数投票,请在标准化欧几里德距离或曼哈顿距离后尝试反向距离加权投票