【问题标题】:Different results between fpc::dbscan and dbscan::dbscanfpc::dbscan 和 dbscan::dbscan 的结果不同
【发布时间】:2019-08-13 23:46:16
【问题描述】:

我想在 R 中在一些 GPS 坐标上实现 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 我们看到,对于 iris 数据,两个函数的作用相同。

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

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

【问题讨论】:

    标签: r dbscan


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-10-04
      • 2020-08-10
      • 2016-06-25
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      • 2011-10-13
      • 2021-04-19
      相关资源
      最近更新 更多