作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我需要你的支持来建议一个库或 vb.net 或 C#.net 中的代码,它应用 DBSCAN 来制作基于密度的数据集群。我有一个 GPS 数据,我想使用 DBSCAN 算法找到停留点。但是,我不太了解算法的技术部分。
最佳答案
不确定这就是您要查找的内容,因为该算法在 wikipedia 上有很好的解释.您想要 C# 中算法的解释或翻译(或好的库)吗?
你可以看看general clustering algorithm也是。
假设您选择了 epsilon 并且开始一个簇的元素数量是 4。
你需要定义一个距离函数、一个DBSCAN函数和一个扩展聚类函数:
来自 wikipedia:
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,则在 epsilon 中进行测试(Epsilon 是圆的半径)。如果是,则启动一个集群(绿色),否则标记为噪声(红色):(每个未访问点的功能 DBSCAN)箭头显示您访问过的所有点
其次:扩展簇:一旦找到一个簇,将所有点标记为绿色并检查该簇中的更多点
注意:如果在集群中,以前的噪声点可以更改为绿色
2个红点其实是在一个簇中...
一旦你完成了所有的点你就停止
关于c# - C# 或 vb.net 中的 DBSCAN 代码,用于聚类分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6621630/
我是一名优秀的程序员,十分优秀!