Python中的地理点聚类

时间:2016-11-22 15:14:00

标签: python machine-learning cluster-analysis

我有一组400k地理点(有纬度和经度),我正在尝试将其聚类并将其绘制在地图上。目前我正在使用Folium包的MarkerCluster来可视化点的聚类。但这似乎非常缓慢,代码会无限期地运行。

只是想知道是否有任何其他Python包可以有效地用于此目的?

当前代码:

import folium
from folium import plugins
from IPython.display import Image, clear_output, display, HTML

data = df[['StartLat','StartLong']].as_matrix()
avgLat = df['StartLat'].mean()
avgLong = df['StartLong'].mean()

mapa = folium.Map([avgLat, avgLong], zoom_start=6)
marker_cluster = folium.MarkerCluster().add_to(mapa)
latArr = np.array(df.StartLat)
lonArr = np.array(df.StartLong)

for i in range(len(latArr)):
        folium.Marker([latArr[i], lonArr[i]], icon = folium.Icon(color='green',icon='ok-sign')).add_to(marker_cluster)
mapa.save('Clustering.html')

1 个答案:

答案 0 :(得分:1)

让我尝试分两步回答你的问题:

  1. 你见过question here吗?它们也存在聚类大量地理坐标的相同问题。建议的解决方案使用scipy.cluster

  2. 中的聚类算法
  3. 但是,对于地理纬度来说。正常的聚类分析技术可能不太适合。这主要是因为从地球表面采集的点样本往往彼此相关(spatial autocorrelation)。因此,这些要点违反了经典统计中许多技术所固有的独立条款。因此,如果您坚持使用Python,我建议您查看包clusterPylink here)。他们有几种常用于空间数据的聚类算法实现。一些关于空间自相关的阅读也可能有助于理解一些算法经常作为参数所需的考虑因素(例如距离带)。