我正在尝试在 R 中实现 KNN 算法。
这是我正在处理的数据集(其中前 2 列是属性,第三列是标签):
2, 3, 1
4, 5, 1
6, 7, -1
8, 9, 1
5, 6, 1
7, 8, -1
我的训练集train.X
是前4个属性:
2, 3
4, 5
6, 7
8, 9
我的测试集test.X
是最后2个属性:
5, 6
7, 8
train.Y
表示训练集的标签,test.Y
表示测试集的标签(我将很快尝试预测以验证)这套)。
该算法的第一步是计算 test.X
和 train.X
之间的欧几里德距离,我知道如何计算。但是,我不确定如何存储距离,以便我可以按升序对它们进行排序。例如,我如何将它们存储在表中?
欣赏任何见解
最佳答案
看看this example - 这非常简单。以下是要点:
对于每个测试点:
初始化一个向量来存储到火车实例的距离:
dsq <- numeric(nrow(train.X))
- 存储在
dsq
到训练点的距离 排序
dsq
按升序排列:ord <- order(dsq)
然后,特定测试点的输出为
p.test <- mean(train.Y[ ord[1:k] ])
哪里k
是您选择的最近邻居数。
希望这有帮助...
关于r - 尝试在 R 中实现 K 最近邻,不知道从这里到哪里去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33331080/