在 R 中使用 k-NN(类包)的最近邻索引
Posted
技术标签:
【中文标题】在 R 中使用 k-NN(类包)的最近邻索引【英文标题】:Indexes of nearest neighbors using k-NN (class package) in R 【发布时间】:2015-01-21 04:45:08 【问题描述】:我正在使用class包的knn函数:
k <- knn(train = training, test = testset, cl = classes, k = 1, prob = TRUE)
对于测试集中给定的例子,有什么方法可以获取训练数据中 k 个最近邻的索引?我在包的文档中没有找到任何相关信息! knn 函数只返回测试样例的类和分类概率,而不是每个测试样例的 k 个最近邻的索引。
提前致谢!
【问题讨论】:
忘了说这个问题问得好! 【参考方案1】:你需要一个不同的包来做到这一点。您需要 R 中的 FNN 包和函数 get.knn。你可以阅读文档here
这是一个简单的例子:
library(FNN)
data <- cbind(1:100, 1:100)
a <- get.knn(data, k=3)
然后你输入这个来获取每条记录的 3 个最近邻居的索引:
> a$nn.index
[,1] [,2] [,3]
[1,] 2 3 4
[2,] 1 3 4
[3,] 2 4 1
[4,] 3 5 2
[5,] 6 4 3
[6,] 5 7 4
[7,] 6 8 5
[8,] 9 7 10
[9,] 10 8 11
[10,] 9 11 12
[11,] 12 10 9
【讨论】:
以上是关于在 R 中使用 k-NN(类包)的最近邻索引的主要内容,如果未能解决你的问题,请参考以下文章