gpt4 book ai didi

python - 将 GPS 点与 Panda 分组

转载 作者:行者123 更新时间:2023-12-01 08:42:26 24 4
gpt4 key购买 nike

我有一个 Pandas 塔数据框,例如:

site       lat      lon
18ALOP01 11.1278 14.3578
18ALOP02 11.1278 14.3578
18ALOP12 11.1288 14.3575
18PENO01 11.1580 14.2898

如果它们太近(50m),我需要将它们分组。然后,我制作了一个执行“自交叉连接”的脚本,计算所有站点组合之间的距离,并为距离小于阈值的站点设置相同的 id。因此,如果我有 n 个站点,它将计算 (n^2) - n 组合,那么,这是一个很差的算法。有更好的方法吗?

最佳答案

假设站点的数量和“真实”位置未知,您可以尝试 MeanShift聚类算法。虽然这是一种通用算法并且可扩展性不高,但它比在 python 中实现您自己的聚类算法更快,您可以尝试 bin_seeding=True作为一种优化,如果将数据点分箱到网格中是修剪起始种子的可接受的捷径。 (注意:如果将数据点分箱到网格,而不是计算点之间的欧几里德距离,是一个可接受的“完整”解决方案,那么这似乎是解决您的问题的最快方法。)

这是 scikit-learn 实现 MeanShift 的示例,其中 x/y 坐标以米为单位,算法创建半径为 50m 的簇。

In [2]: from sklearn.cluster import MeanShift

In [3]: import numpy as np

In [4]: X = np.array([
...: [0, 1], [51, 1], [100, 1], [151, 1],
...: ])

In [5]: clustering = MeanShift(bandwidth=50).fit(X) # OR speed up with bin_seeding=True

In [6]: print(clustering.labels_)
[1 0 0 2]

In [7]: print(clustering.cluster_centers_)
[[ 75.5 1. ]
[ 0. 1. ]
[151. 1. ]]

关于python - 将 GPS 点与 Panda 分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53451006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com