Примечание: изначально опубликовано в Cross Validated, но в рекомендациях говорится, что эта тема лучше подходит для этой темы.
Я использую метод knn в пакете FNN для классификации, но я хотел бы видеть N ближайших соседей, а не только самого верхнего. Я пробовал разные пакеты (например, FastKNN и knncat), но не могу найти быструю функцию, которая сделает это за вас.
Это аналогичный вопрос (за исключением части матрицы расстояний): Найти 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
Мне было интересно, была ли уже реализована его оптимизированная версия или есть ли у кого-нибудь идеи о том, как сделать это быстрее.