Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Пытаюсь реализовать K-Nearest Neighbor в R, не знаю, куда идти дальше

Автор вопроса: eyes enbergОтветов: 1

Я пытаюсь реализовать алгоритм KNN в R.

Это набор данных, над которым я работаю (где первые 2 столбца - это атрибуты, а третий - метка):

2, 3, 1
4, 5, 1
6, 7, -1
8, 9, 1
5, 6, 1
7, 8, -1

Мой тренировочный набор train.X - это первые 4 атрибута:

2, 3
4, 5
6, 7
8, 9

Мой тестовый набор test.X - это последние 2 атрибута:

5, 6
7, 8

train.Y представляет метки тренировочного набора, а test.Y представляет метки тестового набора (который я скоро попытаюсь проверить и спрогнозировать для этого набора).

Первым шагом алгоритма является вычисление евклидова расстояния между test.X и train.X, которое я умею вычислять. Однако я не уверен, как хранить расстояния, чтобы затем сортировать их в порядке возрастания. Как бы я сохранил их в таблице, например?

Цените любое понимание

  • Посмотрите на функцию knn() из пакета class. В файле справки есть хороший пример. DunderChief 25.10.2015
  • Он не показывает реализацию knn, а только то, как его использовать. eyes enberg 25.10.2015
  • вы можете получить реализацию knn()с этим кодом: library(class); class:knn подробности здесь: stackoverflow.com/questions/19192407/ knb 26.10.2015

rmachine-learningclassificationnearest-neighbor

Ответы

Ответ 1 · рейтинг 1 · desertnaut

Взгляните на этот пример - он довольно прямолинейный. Вот основные моменты:

  • Для каждой контрольной точки:

    • Инициализируйте вектор для хранения расстояний до экземпляров поезда:

      dsq <- numeric(nrow(train.X))

    • сохранить в dsq расстояния до тренировочных точек
    • Упорядочить dsq в порядке возрастания:

      ord <- order(dsq)

    • Затем ваш вывод для конкретной контрольной точки будет

      p.test <- mean(train.Y[ ord[1:k] ])

где k - выбранный вами номер ближайших соседей.

Надеюсь это поможет...

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы