我有超过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/