在R中使用KNN(k = 2)时,不断对小数据集进行不同的预测

时间:2015-12-11 03:21:28

标签: r algorithm knn

使用以下训练集考虑此回归问题:

enter image description here

我想预测每个对象的2最近邻预测 - 但是,每次调用knn函数时,我都会得到不同的预测。应该是这样的吗?以下是我使用的代码:

library(class)
test <- train <- matrix(c(-1, 0, 2, 3),,1)
cl <- c(0, 1, 2, 1)
knn(train, test, cl, k=2)

输出:

> knn(train, test, cl, k=2)
[1] 1 1 2 2
Levels: 0 1 2
> knn(train, test, cl, k=2)
[1] 0 0 1 2
Levels: 0 1 2
> knn(train, test, cl, k=2)
[1] 1 1 1 2
Levels: 0 1 2
> knn(train, test, cl, k=2)
[1] 0 0 1 2
Levels: 0 1 2

非常感谢任何澄清。

2 个答案:

答案 0 :(得分:4)

knn关系被随机打破并且你设置的方式在投票中总是会有一个正确的(完全匹配)和一个不正确的标签(最接近的匹配),因此结果总是如此实际标签和错误标签之间的随机选择。

通过多次运行实验并查看结果,您可以凭经验看到 - 每一行将以大致相同的比例产生两种不同的结果。

答案 1 :(得分:0)

尽管代码不起作用,我的猜测是有一个平局,在这种情况下它会随机选择,这就是为什么你每次使用时都会看到不同的结果。在这种情况下选择k = 3会停止所有联系并且每次都给你相同的答案。