我目前面临的问题是如何在python中集群大约500000个经纬度对。到目前为止,我尝试过用NUMPY计算一个距离矩阵(传递到SCIKIT学习DBSCAN),但是用这么大的输入,它很快就会吐出一个内存错误。
这些点被存储在包含纬度、经度和那个点的数据值的元组中。
简而言之,在python中,在空间上集群大量经纬度对的最有效方法是什么?对于这个应用程序,我愿意以速度的名义牺牲一些准确性。
编辑:
寻找算法的簇的数目提前未知。
最佳答案
我没有你的数据,所以我只是把500个随机数分成三列。
import numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.vq import kmeans2, whiten
arr = np.random.randn(500000*3).reshape((500000, 3))
x, y = kmeans2(whiten(arr), 7, iter = 20) #<--- I randomly picked 7 clusters
plt.scatter(arr[:,0], arr[:,1], c=y, alpha=0.33333);
out[1]:
我计时了,用了1.96秒钟来运行这个KMeNS2,所以我不认为它与你的数据大小有关。将数据放入500000x 3 numpy数组并尝试kmeans2。