考虑使用以下训练集的回归问题:
我想为每个对象预测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
我会非常感谢你的澄清。
发布于 2015-12-11 03:42:06
在knn
中,平局是随机打破的,按照您设置的方式,投票中将始终只有一个正确的标签(完全匹配)和一个错误的标签(最近的匹配),因此结果总是在实际标签和错误标签之间随机选择。
您可以通过多次运行实验并查看结果,从经验上看到这一点-每一行都会有两个大致相同比例的不同结果。
发布于 2015-12-11 03:41:37
尽管代码不起作用,但我猜测这是一个平局,在这种情况下,它会随机选择,这就是为什么你每次使用它都会看到不同的结果。在这种情况下,选择k=3将停止所有关联,并每次都给您相同的答案。
https://stackoverflow.com/questions/34215579
复制相似问题