所以我有一个聚类任务,我必须创建每个点之间的距离不超过 30 公里的聚类。我只有经度和纬度。所以我使用了 DBSCAN 算法(得到了我需要的结果),将纬度和经度点转换为以公里为单位的距离,并得到了 11 个簇。在那里你可以看到它们是如何绘制的 here .
正如您所看到的,有些集群只有 1 分。但无论如何,我的问题是如何找到聚类点之间的最大和最小距离?换句话说,我需要找到彼此最接近的两个聚类点和彼此最远的两个点并找到它们的距离。我找到了一些其他集群算法的解决方案,但没有找到 DBSCAN 的任何解决方案。
最佳答案
您必须自己计算它们,因为 DBSCAN 不使用成对距离。
有计算两两距离的函数,然后你可以简单地调用max()
和min()
(这里要注意不要包括对角线) )。
如果这太慢,您可能需要研究使用三角形不等式的边界技术。对于最远点,如果可能的话,从边界点开始,找到距该边界点最远的点;然后再一次。这将为您提供良好的候选者以进行进一步的搜索。
关于python - 如何使用 DBSCAN 找到集群成员之间的最大/最小距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59352685/