C#或vb.net中的DBSCAN代码,用于Cluster Analysis

wal*_*rem 5 c# algorithm gps cluster-analysis dbscan

我需要你的支持来建议vb.net或C#.net中的库或代码,它们应用DBSCAN来制作基于Denisty的数据集群.我有GPS数据,我想使用DBSCAN算法找到停留点.但是,我对算法的技术部分了解不多.

Ric*_*bby 17

不确定这是你正在寻找什么,因为该算法在维基百科上得到很好的解释.你想要在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
Run Code Online (Sandbox Code Playgroud)

你有一个点列表:

第一:随机选择一个点:

在小量测试(小量是圆的半径),如果点的数量为4.如果是启动群集(绿色),否则标记为噪声(红色):( fonction DBSCAN每个未访问点)的箭头表示的所有点你去过了

在此输入图像描述

其次:展开群集:一旦找到群集标记所有点绿色并检查此群集中的更多点

在此输入图像描述

注意:如果在群集中,以前的噪声点可以更改为绿色

在此输入图像描述

2个红点实际上是一个集群......

在此输入图像描述

一旦你完成所有你停止的点数