fpc :: dbscan和dbscan :: dbscan

时间:2019-03-22 23:12:54

标签: r dbscan

我想在某些GPS坐标上在R中实现DBSCAN。我有一个距离矩阵(dist_matrix),可以输入以下函数:

dbscan :: dbscan(dis_matrix,eps = 50,minPts = 5,borderPoints = TRUE) fpc :: dbscan(dis_matrix,eps = 50,MinPts = 5,method =“ dist”)

和Im在簇的数量以及一个点是一个噪声点还是属于一个簇方面,从这两个函数得到的结果截然不同。基本上,两种算法的结果不一致。我不知道他们为什么会产生这些截然不同的结果,尽管在这里 http://www.sthda.com/english/wiki/wiki.php?id_contents=7940 我们看到虹膜数据,两个功能都做同样的事情。

我的距离矩阵[来自一个函数(geosphere :: distm),该函数计算超过2000个坐标之间的空间距离。

此外,我根据此伪代码对dbscan进行了编码 来源:https://cse.buffalo.edu/~jing/cse601/fa13/materials/clustering_density.pdf 我的结果等于从fpc包中获得的结果。 谁能注意到他们为什么与众不同。我已经研究了这两个功能,但没有发现任何东西。

1 个答案:

答案 0 :(得分:1)

geosphere::distm的文档说它不返回dist对象,而是返回一个矩阵。 dbscan::dbscan假设您具有数据矩阵而不是距离。首先使用dist将矩阵转换为as.dist对象。这应该可以解决问题。