【问题标题】:How can I find maximum/minimum distances between cluster members using DBSCAN?如何使用 DBSCAN 找到集群成员之间的最大/最小距离?
【发布时间】:2020-04-08 16:25:01
【问题描述】:

所以我有一个聚类任务,我必须制作每个点之间的距离不高于 30 公里的聚类。我只有经度和纬度。所以我为此使用了 DBSCAN 算法(得到了我需要的结果),将纬度和经度点转换为以公里为单位的距离,得到 11 个聚类。在那里你可以看到它们是如何绘制的 here.

如您所见,有些集群只有 1 分。但无论如何,我的问题是如何找到聚类点之间的最大和最小距离?换句话说,我需要找到彼此最近的两个聚类点和彼此最远的两个点并找到它们的距离。我找到了一些其他集群算法的解决方案,但没有找到 DBSCAN 的任何解决方案。

【问题讨论】:

  • 你有多少分?是否可以通过仅计算集群 A 和 B 的所有点之间的距离然后取最大值、最小值和相应的 ID 来蛮力?有几个 1000 点 numpy 应该没有任何问题。

标签: python pandas dbscan


【解决方案1】:

您必须自己计算它们,因为 DBSCAN 不使用成对距离。

有计算成对距离的函数,然后你可以简单地调用max()min()(这里要注意不包括对角线)。

如果这太慢,您可能需要研究使用三角不等式的边界技术。对于最远的点,如果可能的话,从一个边界点开始,找到到这个最远的点;然后再一次。这将为您提供更好的候选人来进一步搜索。

【讨论】:

    猜你喜欢
    • 2014-04-20
    • 2017-08-30
    • 1970-01-01
    • 2016-02-28
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    相关资源
    最近更新 更多