近接性によってセット内のオブジェクトをグループ化するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/480316

質問

数千のアドレスを含むセットがあります。各住所の経度と緯度を取得できた場合、そのセットを近さによってグループに分割するにはどうすればよいでしょうか?

さらに、別のルールに従って「クラスタリング」を再試行することもできます。

  • Nグループ
  • グループごとに M 個のアドレス
  • グループ内のアドレス間の最大距離
役に立ちましたか?

解決

あなたはのクラスタリングアルゴリズム K-手段を試すことができます。

他のヒント

あなたは、ベクトル量子化を望んます:

http://en.wikipedia.org/wiki/Vector_quantizationする

は "はそれが約それらに最も近いポイントの同じ数を有するグループに点(ベクトル)の大規模なセットを分割することにより作用する。各グループは、k平均およびいくつかの他のクラスタリングのように、その重心点で表されアルゴリズム。の "

ここでベクトルは、各アドレスの地理座標であり、そして、あなたの制約に応じて、他のパラメータ(近接、グループサイズ、グループの数...)を使用してアルゴリズムを養うことができます。

あなたがk-means法で始めることができますが、私の経験からボロノイベースのアルゴリズムは、より柔軟です。良い導入ここを。

それは、クラスタリングしたいデータの規模によって多少異なります。強引なアプローチでは、距離配列内の点のすべての組み合わせ間の距離を計算します。結果の配列は N^2 で、A から B までの距離は B から A までの距離と同じであるため、必要な距離は半分だけなので、結果のセットは N^2/2 になります。

比較的近い緯度経度の座標の場合は、緯度経度を X、Y グリッドとして使用し、デカルト距離を計算することで回避できる場合があります。現実世界は平坦ではないため、デカルト距離には誤差が生じます。住所が全国にある場合に使用する必要があるより正確な計算については、次を参照してください。 Mathforum.com からのこのリンク.

距離行列全体を処理するスケールがない場合は、効率を高めるためにアルゴリズム プログラミングを行う必要があります。

「Nグループ」および「グループ当たりMアドレス」制約が相互に排他的です。一つは、他のことを意味します。

  1. をマトリクスの間の距離のすべてのスしています。
  2. からランダムにアドレス、ソートのマトリックスを昇順までの距離れるアドレス
  3. 削除アドレスからのマトリクスとして使によって、場所の住所の開始アドレスの新しいグループまでご準サイズのグループは最大距離).
  4. 回グループは、別のランダムドリゾートのマトリクスによる距離のこと住所
  5. 続きこれまでのすべてのアドレスを取り出しを行います。

場合はアドレスの配布を均一に、各グループのような円形の開始アドレスです。の問題がき開始アドレスの近くの既存ます。この新しいグループのようなラップの周りのものを○で囲んで下さい全くの場合停止の基準はグループサイズです。ご利用の場合の最大距離の制約、そのことはないだろう(その他の制約).

書かないことにしましたがそこで何をいいます。確かに多くの最適化が必要になります。特にアドレスのドアップ。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top