我正在寻找一个python库来将一组坐标组织成簇。我的输入是(纬度,经度)坐标的列表,我想得到一个根据距离对它们进行分组的聚类列表。
我不知道我需要获得多少个集群,所以我不能使用类似K-Means的东西(比如cluster module)算法(至少不是一个人,也许我有一个我可以使用算法根据输入数据获得该数字。
我也查看了clusterpy,但这项任务似乎过于复杂,而且文档也不是很有指导性。
答案 0 :(得分:1)
您可能需要查看DBSCAN (Wikipedia)和OPTICS (Wikipedia)等算法。我不知道是否有任何好的Python实现。我在这里提到的OPTICAL上提到的那个似乎非常不正确和不完整。 DBSCAN很简单,你可以自己实现它。
一些主要好处:
O(n log n)
。答案 1 :(得分:1)
我会推荐scikit learn。链接页面对不同的聚类算法进行了很好的讨论。对于地理集群(如上文所述,建议使用DBSCAN)。
答案 2 :(得分:0)
几年前我使用Python完成基因序列完全相同的事情,它是完全可行的。
要从初始数据中获得最佳数量的聚类,您需要使用惩罚器。在Hastie-Tibshirani-Friedman的“统计学习要素”一书中,有一篇很好的部分解释了如何做到这一点:http://www-stat.stanford.edu/~tibs/ElemStatLearn/
这是我从中学到的,希望它有所帮助!
答案 3 :(得分:0)
我有一些朋友使用NetWorkX来解决这类问题。它编写得非常好,文档也很好。