我有一个包含数千个地址的集合。如果我可以获取每个地址的经纬度,如何按照接近程度将该集合分成组?
此外,我可能希望根据不同规则重新尝试“聚类”:
- N组
- 每组M个地址
- 组内任何地址之间的最大距离
我有一个包含数千个地址的集合。如果我可以获取每个地址的经纬度,如何按照接近程度将该集合分成组?
此外,我可能希望根据不同规则重新尝试“聚类”:
你想要向量量化:
http://en.wikipedia.org/wiki/Vector_quantization
"它的工作原理是将一组大点(向量)分成具有大致相同数量的最接近它们的点的组。每个组由其质心点表示,就像k-means和其他一些聚类算法一样。"在这里,向量是每个地址的地理坐标,并且您可以根据约束条件(接近度、组大小、组数等)使用其他参数来提供算法。
"您可以从k-means开始,但从我的经验来看,基于Voronoi的算法更加灵活。一个好的介绍在这里。
""N组"和"每组M个地址"的限制是互斥的。一个暗示着另一个。
如果地址分布均匀,则每个组围绕起始地址形成一种圆形。问题在于起始地址靠近现有组时。当发生这种情况时,新组将围绕旧组缠绕,并且甚至可能完全包围它,如果您的停止标准仅为组大小,则会发生这种情况。如果使用最大距离约束,则不会发生这种情况(假设没有其他约束)。
我不知道这是否是一个好方法,但这是我尝试的方法。我相信需要进行大量优化。特别是对于边缘地址。