返回最近邻的值

Posted

技术标签:

【中文标题】返回最近邻的值【英文标题】:return the value of the nearest neighbor 【发布时间】:2018-04-04 12:00:08 【问题描述】:

我想使用 knn 方法进行分类,但是除了检索适当的标签之外,我还需要检索最近邻的值(对测试数据)。如何检索 1nn 中最近的邻居? 比如我有如下数据

#this is the train data
X   Y   L
1   4   T
2   5   F
3   6   T
#this is the test data
X   Y   L
8   3   T
#knn with k=1
knn(train[,-3],test[,-3],train$L,k=1)

这个函数的响应只有合适的label("T"),但是我想(比如这里是返回: 行 3:3 6 T) 请帮帮我。

【问题讨论】:

我想指定每个数据帧中每个实例的有用性。(有用性,定义为该实例正确分类的实例数。)我想在有用性属性中添加一个数字(到训练数据),如果给定 knn 的标签等于实际标签。我的数据是列表中的多个数据帧。 【参考方案1】:

几个不同的包都有 knn 的实现,你没有说你在使用哪个。并非所有这些都提供邻居,但 FNN 中的 knn 版本提供。

library(FNN)
KNN_Model = knn(train[,-3],test[,-3],train$L,k=1)
attr(KNN_Model, "nn.index")
     [,1]
[1,]    3

【讨论】:

如果我在一个列表中有多个数据框,除了行号,我可以指定对应的数据框吗? 我不认为 knn 的任何实现都适用于数据帧列表。我认为您是说列表中的所有数据框都具有相同的结构,并且您想将新点与所有数据框中的点进行比较。如果这是真的,我建议创建一个包含所有数据的大数据框,但添加一列来指示每个点来自哪个原始 DF。 我想在 dprep 包中使用 knngow,因为这种方法可以用于名义数据和数值数据。这个包里有没有可以检索最近邻数据的功能(返回你之前对我问题的回答)

以上是关于返回最近邻的值的主要内容,如果未能解决你的问题,请参考以下文章

最近邻搜索kdTree

数据集 Node.js 中的最近邻

如何从 k 最近邻预测中提取边界值

四叉树最近邻算法

k近邻算法(knn)与k-means算法的对比

如果我放宽一些约束,我可以得到近似最近邻的算法快捷方式吗?