我有一组Points对象,包含纬度和经度(以及一些其他不相关的属性)。我想形成集群,即相对于其他点靠近在一起的点的集合。
或者,我想要一种算法,如果给出包含近点和新点的聚类列表,则确定新点所属的聚类(并且如果它不属于,则将其添加到新聚类中)到现有的集群)。
我查看了分层聚类算法,但那些运行速度太慢。 k-means算法要求您事先知道簇的数量,这对于实际上并不是非常有帮助。
谢谢!
答案 0 :(得分:1)
尝试基于密度的聚类方法。 DBSCAN是其中最受欢迎的之一。
我假设你正在使用python。 看看这个:
http://scikit-learn.org/stable/modules/generated/sklearn.cluster.DBSCAN.html
http://scikit-learn.org/stable/auto_examples/cluster/plot_dbscan.html
当您基于GPS lat / lon进行聚类时,您可能希望使用与DBSCAN默认值不同的距离计算方法。使用其metric
参数可以使用您自己的距离计算函数或距离矩阵。对于距离计算,请查看Haversine Formula
。