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

Я пытаюсь реализовать алгоритм 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, которое я умею вычислять. Однако я не уверен, как хранить расстояния, чтобы затем сортировать их в порядке возрастания. Как бы я сохранил их в таблице, например?

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


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


Ответы (1)


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

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

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

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

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

      ord <- order(dsq)

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

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

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

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

person desertnaut    schedule 25.10.2015