使用以下训练集考虑此回归问题:
我想预测每个对象的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
非常感谢任何澄清。
答案 0 :(得分:4)
在knn
关系被随机打破并且你设置的方式在投票中总是会有一个正确的(完全匹配)和一个不正确的标签(最接近的匹配),因此结果总是如此实际标签和错误标签之间的随机选择。
通过多次运行实验并查看结果,您可以凭经验看到 - 每一行将以大致相同的比例产生两种不同的结果。
答案 1 :(得分:0)
尽管代码不起作用,我的猜测是有一个平局,在这种情况下它会随机选择,这就是为什么你每次使用时都会看到不同的结果。在这种情况下选择k = 3会停止所有联系并且每次都给你相同的答案。