试图在R中实现K-Nearest Neighbor,不知道从哪里开始

时间:2015-10-25 14:55:56

标签: r machine-learning classification nearest-neighbor

我正在尝试在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.Xtrain.X之间的欧几里德距离,我知道如何计算。但是,我不确定如何存储距离,以便我可以按顺序对它们进行排序。例如,我如何将它们存储在表格中?

欣赏任何见解

1 个答案:

答案 0 :(得分:1)

看看this example - 这是非常直截了当的。以下是要点:

  • 对于每个测试点:

    • 初始化矢量以存储到火车实例的距离:

      dsq <- numeric(nrow(train.X))

    • dsq存储到培训点的距离
    • 按递增顺序排序dsq

      ord <- order(dsq)

    • 然后,您的特定测试点的输出是

      p.test <- mean(train.Y[ ord[1:k] ])

其中k是你选择的最近邻居。

希望这会有所帮助......