我有超过40万辆汽车的GPS定位,比如:

[ 25.41452217,  37.94879532],
[ 25.33231735,  37.93455887],
[ 25.44327736,  37.96868896],
...

我需要用点之间的距离我试图使用DBSCAN,但它似乎不适用于geo(longitude, latitude)
另外,我不知道集群的数量。

最佳答案

您可以使用成对距离来计算经纬度的地理距离,然后通过指定metric=“precomputed”将距离矩阵传递到DBSCAN中。
要计算距离矩阵:

from sklearn.metrics.pairwise import pairwise_distances
from sklearn.cluster import DBSCAN
from geopy.distance import vincenty

def distance_in_meters(x, y):
    return vincenty((x[0], x[1]), (y[0], y[1])).m

distance_matrix = pairwise_distances(sample, metric=distance_in_meters)

要使用矩阵运行DBSCAN:
dbscan = DBSCAN(metric='precomputed', eps=3, min_samples=10)
dbscan.fit(distance_matrix)

希望这有帮助。
耿羽

关于python - 聚类经纬度gps数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36816084/

10-12 22:05