gpt4 book ai didi

r - 从距离矩阵开始查找 K 个最近邻

转载 作者:行者123 更新时间:2023-12-01 18:14:42 24 4
gpt4 key购买 nike

我正在寻找一个接受 n X n 的优化良好的函数距离矩阵并返回 n X k索引为 k 的矩阵第 i 行中第 i 个数据点的最近邻居。

我发现了无数不同的R可以让您执行 KNN 的软件包,但它们似乎都在同一函数中包含距离计算和排序算法。特别是,对于大多数例程来说,主要参数是原始数据矩阵,而不是距离矩阵。就我而言,我在混合变量类型上使用非标准距离,因此我需要将排序问题与距离计算分开。

这并不是一个令人畏惧的问题——我显然可以使用 order在循环中运行函数以获得我想要的东西(请参阅下面的解决方案),但这远非最佳。例如,sort函数 partial = 1:kk很小(小于 11),速度会快得多,但不幸的是,仅返回排序值,而不是所需的索引。

最佳答案

尝试使用FastKNN CRAN 包(尽管没有很好的文档记录)。它提供了 k.nearest.neighbors 函数,可以给出任意距离矩阵。下面有一个计算所需矩阵的示例。

# arbitrary data
train <- matrix(sample(c("a","b","c"),12,replace=TRUE), ncol=2) # n x 2
n = dim(train)[1]
distMatrix <- matrix(runif(n^2,0,1),ncol=n) # n x n

# matrix of neighbours
k=3
nn = matrix(0,n,k) # n x k
for (i in 1:n)
nn[i,] = k.nearest.neighbors(i, distMatrix, k = k)

Notice: You can always check Cran packages list for Ctrl+F='knn' related functions: https://cran.r-project.org/web/packages/available_packages_by_name.html

关于r - 从距离矩阵开始查找 K 个最近邻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23449726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com