KNN 找到前 N 个邻居
KNN finding the top N neighbors
注意:最初发布在 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
我想知道是否已经实施了它的优化版本,或者是否有人对如何使其更快有任何想法。
这是您要查找的代码:
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
注意:最初发布在 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
我想知道是否已经实施了它的优化版本,或者是否有人对如何使其更快有任何想法。
这是您要查找的代码:
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