Код DBSCAN на C # или vb.net для кластерного анализа - PullRequest
5 голосов
/ 08 июля 2011

Пожалуйста, мне нужна ваша поддержка, чтобы посоветовать библиотеку или код в vb.net или C # .net, которые применяют DBSCAN для создания Denisty Based Cluster данных.У меня есть данные GPS, и я хочу найти точки пребывания, используя алгоритм DBSCAN.Но я не очень разбираюсь в технической части алгоритма.

Ответы [ 2 ]

17 голосов
/ 08 июля 2011

Не уверен, что это то, что вы ищете, потому что алгоритм очень хорошо объяснен в wikipedia . Вы хотите объяснить алгоритм или его перевод (или хорошую библиотеку) в C #?

Вы также можете взглянуть на общий алгоритм кластеризации .

Алгоритм

Допустим, вы выбрали epsilon, а количество элементов для запуска кластера равно 4.

Вам необходимо определить функцию расстояния, функцию DBSCAN и функцию расширения кластера:

из википедии:

DBSCAN(D, eps, MinPts)
   C = 0
   for each unvisited point P in dataset D
      mark P as visited
      N = getNeighbors (P, eps)
      if sizeof(N) < MinPts
         mark P as NOISE
      else
         C = next cluster
         expandCluster(P, N, C, eps, MinPts)

expandCluster(P, N, C, eps, MinPts)
   add P to cluster C
   for each point P' in N 
      if P' is not visited
         mark P' as visited
         N' = getNeighbors(P', eps)
         if sizeof(N') >= MinPts
            N = N joined with N'
      if P' is not yet member of any cluster
         add P' to cluster C

У вас есть список баллов:

Первый: выбрать точку случайным образом:

Тест в эпсилоне (Эпсилон - это радиус окружностей), если число точек равно 4. Если да, запустить кластер (зеленый), в противном случае пометить как шум (красный) :( функция DBSCAN для каждой не посещенной точки) Стрелки показывают все точки, которые вы посетили

enter image description here

во-вторых: разверните кластер: как только вы найдете кластер, отметьте все точки зелеными и проверьте наличие других точек в этом кластере

enter image description here

ПРИМЕЧАНИЕ: ранее созданную точку шума можно изменить на зеленый, если в кластере

enter image description here

2 красные точки на самом деле находятся в кластере ...

enter image description here

Как только вы прошли все пункты, вы останавливаетесь

1 голос
/ 25 февраля 2012

OPTICS, расширение DBSCAN, которое избавляет от иногда трудно выбрать параметр epsilon (но это может быть довольно легко для вас, поскольку у вас есть геоданные - просто установите его на 1 км или что высчитайте разумным).

Это довольно хорошее и мощное расширение DBSCAN, но, к сожалению, также немного сложнее в реализации.

...