r - 使用 R 查找仅一个点(不是整个矩阵)的 k 最近邻

标签 r knn

是否有一个包或一种简单的方法可以使用 R 搜索一个点的 k 最近邻(特别是 kd 树)? 所有提供此函数的包(例如 RANN 或 FNN...)计算矩阵中所有点的 knn,我只需要为一个点执行此操作。

例如,我有一个包含 10 个点“A”到“E”的矩阵,我想为“A”找到其他 4 个点(“B”到“E”)之间的 2 个最近邻点,而不执行相同的操作计算数据集中的所有行(不计算“B”、“C”、“D”、“E”的 knn)

我希望我的问题很清楚,我的英语不好。

感谢您的帮助,

最佳答案

如果我理解正确,你可以使用 FNN 包来做到这一点:

> library(FNN)
> X <- matrix(runif(100), 5, 5)
> X
          [,1]      [,2]      [,3]      [,4]      [,5]
[1,] 0.7475301 0.6725876 0.2511358 0.5048512 0.1196027
[2,] 0.5777907 0.6337206 0.8334608 0.5067914 0.6410024
[3,] 0.5488786 0.9613076 0.2217271 0.6906149 0.7396482
[4,] 0.8230380 0.8596784 0.6348114 0.6211107 0.3089131
[5,] 0.6531433 0.8682462 0.2555402 0.2443061 0.5292509
> knnx.dist(X[-1,], X[1, , drop=FALSE], k=2)
          [,1]     [,2]
[1,] 0.4870996 0.531889
> knnx.index(X[-1,], X[1, , drop=FALSE], k=2)
     [,1] [,2]
[1,]    3    4

请注意,knnx.index 的结果与传递给函数的矩阵相关,因此 3 和 4 实际上表示原始数据集的第 4 行和第 5 行。

关于r - 使用 R 查找仅一个点(不是整个矩阵)的 k 最近邻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14025176/

相关文章:

machine-learning - k 最近邻的分类属性的距离度量

r - dplyr::select_if 可以同时使用 colnames 及其值吗?

r - slidify 布局 : title-only, 标题和正文、标题和两列、标题标题和空白

machine-learning - k-最近邻算法

python - 为什么 KNeighborsClassifier 总是预测相同的数字?

opencv - opencv的K最近邻算法使用哪个特征向量来预测识别。

python - 在 Spark 中广播 Annoy 对象(对于最近的邻居)?

r 李克特图编辑

r - 为什么要在 R 中创建新类?

使用跨替换 group_by_at(NULL)