繁体   English   中英

KNN 查找前 N 个邻居

[英]KNN finding the top N neighbors

注意:最初发布在交叉验证中,但建议说这将是一个更适合这里的主题。

我在 FNN 包中使用 knn 方法进行分类,但我想看到 N 个最近的邻居,而不是只看到最靠前的邻居。 我尝试过不同的软件包(例如 FastKNN 和 knncat),但我找不到可以为您执行此操作的快速函数。

这是一个类似的问题(减去距离矩阵的部分): Find K 个最近邻,从一个距离矩阵开始

这是我尝试过的:LINE 包含一行距离矩阵,LINE_N 包含每个预测的前 N ​​个邻居

line_n = c()

  tmp_min <- order(line)[1:ncol(distance)]
  tmp_id <- c()

  for (element in tmp_min)
    tmp_id <- c(tmp_id, colnames(distance)[element])

  for (element in tmp_id){

      if (!(element %in% line_n))
        line_n<- c(line_n, element)
      if (length(line_n) == N)
        break
  }

  line_n

我想知道是否已经实现了它的优化版本,或者是否有人对如何使其更快有任何想法。

这是您要查找的代码:

line_ret = c()
while(length(line_ret) < M)
{
  tmp = which.min(line)
  if (!(col_name[tmp] %in% line_ret))
  line_ret = c(line_ret, col_name[tmp])
  line <- line[-c(tmp)]
  col_name <- col_name[-c(tmp)]
}
line_ret

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM