2015-09-16 2 views
1

Мне нужно найти плотность каждой точки в наборе данных с использованием алгоритма оценки плотности k-NN. Я понимаю базовый подход, используемый для расчета, как показано на скриншоте ниже. Complete slides at [link]enter image description hereОценка объема с помощью K_NN с использованием R

Я хочу знать, есть ли библиотека внутри R, которая предоставляет функции для вычисления оценки плотности K-NN. Хотя есть несколько релевантных вопросов по той же теме в stackoverflow, но ни один из них не отвечает должным образом.

Примечание: Я нашел это question релевантным, но снова ответы не работают.

+0

не ответил? http://stackoverflow.com/questions/5840983/knn-density-estimation-r – hrbrmstr

+0

@hrbrmstr, я согласен с вами. Но ответы не дают того, о чем я прошу. –

ответ

0

Хотя я не нашел ни одного пакета R, который вычисляет плотность в точке. Но я последовал этим шагам, чтобы рассчитать плотность в каждой точке:

  1. Я создаю матрицу расстояний для всех заданных точек на графике (разброс). Поэтому для N точек у меня есть N x N матрица расстояний, где каждый элемент (i, j) представляет собой эвклидово расстояние между с и jth точка.
  2. Теперь используя матрицу расстояний, для каждой точки я разобрал (в порядке возрастания) расстояния относительно других точек. Поэтому, если я хочу расстояние kth соседка, я просто выбираю kth отсортировано по расстоянию.
  3. С Kth соседнее расстояние, я получаю радиус круга. Поэтому теперь я могу заменить значение радиуса в формуле, показанной на приведенном выше рисунке. С этим я могу рассчитать плотность в точке.

Примечание: В R, соседи сортируются в соответствии с расстоянием, используя порядка() функции