KNN找到前N个邻居

时间:2016-04-06 09:17:30

标签: r knn

注意:最初发布在Cross Validated中,但建议说这将是一个更合适的主题。

我正在使用FNN包中的knn方法进行分类,但我希望看到N个最近邻居而不是最顶端的邻居。我尝试过使用不同的软件包(例如FastKNN和knncat)但我找不到能够为你完成此功能的快速功能。

这是一个类似的问题(减去距离矩阵的一部分):Find K nearest neighbors, starting from a distance matrix

这就是我尝试的: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

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

1 个答案:

答案 0 :(得分:0)

以下是您要寻找的代码:

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