我正在尝试在R中实施KNN算法。
这是我正在处理的数据集(其中前两列是属性,第三列是标签):
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
是最后两个属性:
5, 6
7, 8
train.Y
表示训练集的标签,test.Y
表示测试集的标签(我将很快尝试并预测以验证此集合)。
该算法的第一步是计算test.X
和train.X
之间的欧几里德距离,我知道如何计算。但是,我不确定如何存储距离,以便我可以按顺序对它们进行排序。例如,我如何将它们存储在表格中?
欣赏任何见解
答案 0 :(得分:1)
看看this example - 这是非常直截了当的。以下是要点:
对于每个测试点:
初始化矢量以存储到火车实例的距离:
dsq <- numeric(nrow(train.X))
dsq
存储到培训点的距离按递增顺序排序dsq
:
ord <- order(dsq)
然后,您的特定测试点的输出是
p.test <- mean(train.Y[ ord[1:k] ])
其中k
是你选择的最近邻居。
希望这会有所帮助......