我正在尋找一個python庫來組織一組座標到簇中。我的輸入是一個(緯度,經度)座標列表,我想要得到一個根據距離對它們進行分組的列表。用於距離聚類的Python庫
我不知道我需要獲得多少個集羣,所以我不能使用像K-Means(如cluster module)算法(至少不是單獨的),也許我有一個算法,我可以用於根據輸入數據獲取該數字)。
我也看着clusterpy,但它似乎過於複雜的任務和文件不是很指導。
我正在尋找一個python庫來組織一組座標到簇中。我的輸入是一個(緯度,經度)座標列表,我想要得到一個根據距離對它們進行分組的列表。用於距離聚類的Python庫
我不知道我需要獲得多少個集羣,所以我不能使用像K-Means(如cluster module)算法(至少不是單獨的),也許我有一個算法,我可以用於根據輸入數據獲取該數字)。
我也看着clusterpy,但它似乎過於複雜的任務和文件不是很指導。
幾年前我用Python完成了同樣的事情來處理基因序列,它是完全可行的。
要從初始數據中獲得最佳數量的羣集,在通過它們時需要一個懲罰器。在Hastie-Tibshirani-Friedman的「統計學習元素」一書中解釋瞭如何完成這一部分:http://www-stat.stanford.edu/~tibs/ElemStatLearn/
這是我從中學到的東西,希望它有幫助!
我有一些朋友誰使用NetWorkX這種類型的問題。它寫得很好,文檔也很好。
您可能想要查看諸如DBSCAN (Wikipedia)和OPTICS (Wikipedia)等算法。我不知道是否有任何好的Python實現。我在SO上提到的那個在OPTICS上提到的那個似乎是非常不正確和不完整的。 DBSCAN很簡單,你可以自己實現它。
一些主要優勢:
O(n log n)
。
也許使用分層聚類的集羣模塊是可行的方法。我最初放棄了它,因爲我認爲我只能使用排他性方法,但對於我可能有點問題的數據集。 –
「我不知道我需要獲得多少個集羣,所以我不能使用類似於K-Means的東西」你應該幾乎可以肯定地使用k-means,並且使用許多算法中的任何一個來計算k。請參閱http://en.wikipedia.org/wiki/Determining_the_number_of_clusters_in_a_data_set和http://stackoverflow.com/questions/1793532/how-do-i-determine-k-when-using-k-means-clustering。 –
我結束了使用分層算法。由於座標屬於不同地區的地址,我想爲每個鄰域獲得一個聚類,因此算法的明顯距離限制足以獲得我期望的輸出。 –