【问题标题】:r - DBSCAN (Density Based Clustering) describe unit of measure for epsr - DBSCAN(基于密度的聚类)描述 eps 的度量单位
【发布时间】:2018-11-23 03:15:36
【问题描述】:

我试图使用 R 中的 dbscan 包来尝试对一些空间数据进行聚类。 dbscan::dbscan 函数将 epsminpts 作为输入。我有一个包含两列 longitudelatitude 的数据框,以十进制表示,如下所示:

df <- data.frame(lon = c(seq(1,5,1), seq(1,5,1)), 
                   lat = c(1.1,3.1,1.2,4.1,2.1,2.2,3.2,2.4,1.4,5.1))

然后我应用算法:

 db <- fpc::dbscan(df, eps = 1, MinPts = 2)

这里的eps 是用度还是其他单位定义的?我真的很想了解这个最大距离eps 值是用哪个单位表示的,因此不胜感激

【问题讨论】:

    标签: r cluster-analysis dbscan


    【解决方案1】:

    永远不要使用fpc 包,始终使用dbscan::dbscan

    如果你有纬度和经度,你需要选择一个合适的距离函数,比如Haversine。

    默认距离函数欧几里得忽略了地球的球形性质。那么 eps 值是纬度和经度的混合,但这些不对应于均匀的距离!赤道以东 1 度比温哥华以东 1 度远

    即便如此,您也需要注意单位。 Haversine 的一种实现可能会产生弧度,另一种可能会产生一米,当然疯狂的人会以英里为单位工作。

    不幸的是,据我所知,没有一个 R 实现可以加速 Haversine 距离。因此,在 ELKI 中对数据进行聚类可能会快得多(不过,您需要自己添加索引)。

    如果您的数据足够小,您可以在 R 中使用预先计算的距离矩阵(dist 对象)。但这需要 O(n²) 时间和内存,因此它的可扩展性不是很好。

    【讨论】:

      猜你喜欢
      • 2019-08-23
      • 2013-01-31
      • 2016-04-17
      • 2016-05-01
      • 2021-01-02
      • 2015-02-22
      • 2011-04-20
      • 2011-04-17
      • 2020-12-08
      相关资源
      最近更新 更多