【问题标题】:Trying to implement K-Nearest Neighbour in R, not sure where to go from here试图在 R 中实现 K-Nearest Neighbor,不知道从哪里开始
【发布时间】:2016-01-24 16:28:36
【问题描述】:

我正在尝试在 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是最后2个属性:

5, 6
7, 8

train.Y 代表训练集的标签,test.Y 代表测试集的标签(我将很快尝试并预测以针对该集进行验证)。

算法的第一步是计算test.Xtrain.X之间的欧式距离,我知道怎么计算。但是,我不确定如何存储距离,以便我可以按升序对它们进行排序。例如,我将如何将它们存储在表中?

欣赏任何见解

【问题讨论】:

  • 查看knn() 包中的knn() 函数。帮助文件中有一个很好的例子。
  • 这里不展示knn的实现,只展示如何使用。
  • 你可以在knn()的实现中使用此代码:library(class); class:knn 详细信息:stackoverflow.com/questions/19192407/…

标签: r machine-learning classification nearest-neighbor


【解决方案1】:

看看this example - 它非常简单。以下是要点:

  • 对于每个测试点:

    • 初始化一个向量来存储到火车实例的距离:

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

    • 将到训练点的距离存储在dsq
    • 按升序排列dsq

      ord <- order(dsq)

    • 那么,你对特定测试点的输出是

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

k 是您选择的最近邻居数。

希望这会有所帮助...

【讨论】:

    猜你喜欢
    • 2011-06-24
    • 2014-06-28
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多