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

v0v*_*0vk 4 algorithm r knn

考虑以下训练集的回归问题:

在此处输入图片说明

我想预测每个对象的 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)
Run Code Online (Sandbox Code Playgroud)

输出:

> 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
Run Code Online (Sandbox Code Playgroud)

真的很感激任何澄清。

Sim*_*nek 6

knn随机打破平局和设置它的方式中,您将始终在投票中始终只有一个正确的(完全匹配)和一个不正确的标签(最接近的匹配),因此结果始终是实际标签和错误的。

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