地理位置聚类的正确方法和聚类算法是什么?
我使用以下代码对地理位置坐标进行聚类:
import numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.vq import kmeans2, whiten
coordinates= np.array([
[lat, long],
[lat, long],
...
[lat, long]
])
x, y = kmeans2(whiten(coordinates), 3, iter = 20)
plt.scatter(coordinates[:,0], coordinates[:,1], c=y);
plt.show()使用K-均值进行地理定位聚类是否正确,因为它使用欧几里得距离,而不是Haversine公式作为距离函数?
发布于 2014-07-17 12:34:11
在这种情况下,K-均值应该是对的。由于k-的意思是只根据物体之间的欧几里德距离进行分组,你将得到彼此接近的位置簇。
要找到最优的簇数,您可以尝试做一个‘肘部’图的群内和的平方距离。这可能会有帮助
发布于 2014-07-26 16:04:25
K-均值不是这里最合适的算法。
原因是k均值是为了最小化方差而设计的。当然,这是从统计和信号处理的角度来看的,但您的数据并不是“线性的”。
由于您的数据是纬度、经度格式,所以您应该使用一种可以处理任意距离函数的算法,特别是大地距离函数。分层聚类、PAM、CLARA和DBSCAN是这方面的流行例子。
这推荐光学聚类。
当你考虑接近+-180度绕线的点时,k-均值的问题很容易看出。即使你砍了k-意味着使用Haversine距离,在更新步骤中,当它重新计算结果的平均值时,结果将被严重破坏。最坏的情况是,k-均值永远不会收敛!
发布于 2017-05-11 11:31:11
我的答案可能很晚了,但是如果您仍然在处理geo集群,您可能会发现本研究很有趣。比较了两种不同的地理数据分类方法:K均值聚类和潜在类增长模型。
研究中的一幅图片是:

作者的结论是,最终的结果是完全相似的,并且有一些方面的LCGM过高的K-手段。
https://datascience.stackexchange.com/questions/761
复制相似问题