如何基于质心的固定半径对经纬度数据进行聚类作为唯一约束?
How to cluster latitude-longitude data based on fixed radius from centroid as the only constraint?
我有大约 20 万个纬度和经度数据点。我怎样才能对它们进行聚类,使每个聚类的纬度和经度点都严格在距质心 radius = 1 公里的范围内?
我在 R 中尝试了 leadercluster algorithm/package,但尽管我指定了半径 =1 公里,但它并没有严格执行它,即它给出了很多点的集群,比如距离集群质心 5 - 10 公里也在同一个集群。所以不符合我的要求。
集群中的点数可以变化,这不是问题。
有没有办法在分层或其他聚类算法中强制执行严格的半径约束?我正在寻找 R/python 中的步骤和实施。
我尝试在 Whosebug 中搜索,但在 r/python.
中找不到解决方案
如何在完成聚类后在 google 地图中可视化聚类质心?
编辑
我在 ELKI 中使用的参数。请验证
这与其说是聚类问题,不如说是集合覆盖类型的问题。至少如果你正在寻找 好的 封面。聚类算法是关于在数据中寻找结构;但您正在寻找一些强制量化。
无论如何,您可以尝试以下两种策略,例如在 ELKI 中:
- Canopy preclustering with T1=T2=你的半径。这应该会产生对覆盖场景的贪婪近似。
- 完成联动层次凝聚聚类,按所需高度切割。这是相当昂贵的 (O(n^3))。同一个簇中的任意两点最多有这个距离,所以这个比你的要求严格一点。
请注意,您应该使用半正弦 ("geo") 距离,而不是欧几里得!
我有大约 20 万个纬度和经度数据点。我怎样才能对它们进行聚类,使每个聚类的纬度和经度点都严格在距质心 radius = 1 公里的范围内?
我在 R 中尝试了 leadercluster algorithm/package,但尽管我指定了半径 =1 公里,但它并没有严格执行它,即它给出了很多点的集群,比如距离集群质心 5 - 10 公里也在同一个集群。所以不符合我的要求。
集群中的点数可以变化,这不是问题。
有没有办法在分层或其他聚类算法中强制执行严格的半径约束?我正在寻找 R/python 中的步骤和实施。 我尝试在 Whosebug 中搜索,但在 r/python.
中找不到解决方案如何在完成聚类后在 google 地图中可视化聚类质心?
编辑
我在 ELKI 中使用的参数。请验证
这与其说是聚类问题,不如说是集合覆盖类型的问题。至少如果你正在寻找 好的 封面。聚类算法是关于在数据中寻找结构;但您正在寻找一些强制量化。
无论如何,您可以尝试以下两种策略,例如在 ELKI 中:
- Canopy preclustering with T1=T2=你的半径。这应该会产生对覆盖场景的贪婪近似。
- 完成联动层次凝聚聚类,按所需高度切割。这是相当昂贵的 (O(n^3))。同一个簇中的任意两点最多有这个距离,所以这个比你的要求严格一点。
请注意,您应该使用半正弦 ("geo") 距离,而不是欧几里得!