试图在 R 中实现 K-Nearest Neighbor,不知道从哪里开始
Posted
技术标签:
【中文标题】试图在 R 中实现 K-Nearest Neighbor,不知道从哪里开始【英文标题】:Trying to implement K-Nearest Neighbour in R, not sure where to go from here 【发布时间】: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.X
和train.X
之间的欧式距离,我知道怎么计算。但是,我不确定如何存储距离,以便我可以按升序对它们进行排序。例如,我将如何将它们存储在表中?
欣赏任何见解
【问题讨论】:
查看knn()
包中的knn()
函数。帮助文件中有一个很好的例子。
这里不展示knn的实现,只展示如何使用。
你可以在knn()
的实现中使用此代码:library(class); class:knn
详细信息:***.com/questions/19192407/…
【参考方案1】:
看看this example - 它非常简单。以下是要点:
对于每个测试点:
初始化一个向量来存储到火车实例的距离:
dsq <- numeric(nrow(train.X))
dsq
中
按升序排列dsq
:
ord <- order(dsq)
那么,你对特定测试点的输出是
p.test <- mean(train.Y[ ord[1:k] ])
k
是您选择的最近邻居数。
希望这会有所帮助...
【讨论】:
以上是关于试图在 R 中实现 K-Nearest Neighbor,不知道从哪里开始的主要内容,如果未能解决你的问题,请参考以下文章
如何对大型数据库进行采样并在 R 中实现 K-means 和 K-nn?