fpc :: dbscan和dbscan :: dbscan之间的结果不同

问题描述 投票:0回答:1

我想在一些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”)

并且我在两个函数的集群数量方面获得了非常不同的结果,并且如果一个点是一个噪点或者属于一个集群。基本上,两种算法之间的结果不一致。我不知道他们为什么会产生这些非常不同的结果,尽管我们在虹膜数据中看到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包中获得的结果。任何人都可以注意到它们的不同之处我已经调查了两个函数,但没有找到任何东西。

r dbscan
1个回答
2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.