一组数据点的聚类算法

时间:2015-05-08 16:14:04

标签: python algorithm maps

我有一组Points对象,包含纬度和经度(以及一些其他不相关的属性)。我想形成集群,即相对于其他点靠近在一起的点的集合。

或者,我想要一种算法,如果给出包含近点和新点的聚类列表,则确定新点所属的聚类(并且如果它不属于,则将其添加到新聚类中)到现有的集群)。

我查看了分层聚类算法,但那些运行速度太慢。 k-means算法要求您事先知道簇的数量,这对于实际上并不是非常有帮助。

谢谢!

1 个答案:

答案 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