3

一連の座標をクラスターに編成するための Python ライブラリを探しています。私の入力は(緯度、経度)座標のリストであり、距離に従ってグループ化されたクラスターのリストを取得したいと考えています。

取得する必要があるクラスターの数が事前にわからないため、K-Means (クラスターモジュールなど) アルゴリズムのようなものを使用できません (少なくとも単独ではなく、取得に使用できるアルゴリズムがあるかもしれません)その数は入力データに基づいています)。

clusterpyも調べましたが、タスクが複雑すぎるようで、ドキュメントはあまり参考になりません。

4

4 に答える 4

1

DBSCAN(ウィキペディア)OPTICS(ウィキペディア)などのアルゴリズムを調べることをお勧めします。しかし、Pythonの優れた実装があるかどうかはわかりません。SO for OPTICSで私がここで言及したものは、非常に不正確で不完全なように見えました。DBSCANは非常にシンプルで、自分で実装できます。

いくつかの主な利点:

  • 緯度/経度座標により適した大円距離を使用できます。K-meansは、180°でのラップアラウンドのために問題が発生します-平均値は安定していません
  • 2つのしきい値を設定する必要があります。半径イプシロン(DBSCANの場合のみ)。これは、上記の距離ではキロメートル単位であり、おおよそ最小クラスターサイズです。そのパラメータは、ユースケースに応じて非常に簡単に設定できるはずです。
  • 空間インデックスがある場合は、アルゴリズムをに加速できますO(n log n)
  • クラスターの数にヒューリスティックは必要ありません!
于 2012-11-01T09:24:24.923 に答える
0

私は数年前にPythonを使って遺伝子配列に対してまったく同じことをしましたが、それは完全に実行可能です。

初期データから最適な数のクラスターを取得するには、クラスターを通過するときにペナルティを設定する必要があります。Hastie-Tibshirani-Friedman著の「ElementsofStatisticsLearning」(http://www-stat.stanford.edu/~tibs/ElemStatLearn/ )には、それをどのように行うことができるかを説明する優れたセクションがありました。

これは私がそれを学んだところです、それが役立つことを願っています!

于 2012-10-31T18:49:40.660 に答える
0

I have some friends who've used NetWorkX for this type of problem. It's pretty well-written and the documentation is good, too.

于 2012-10-31T22:49:39.520 に答える