2016-08-10 13 views
0

に、2次元空間内のグループ、それらを境界ボックスのセットが与えられた座標:頂点と<strong>N</strong>バウンディングボックスのセットが与えられる行

"vertices": [ 
    { 
     "y": 486, 
     "x": 336 
    }, 
    { 
     "y": 486, 
     "x": 2235 
    }, 
    { 
     "y": 3393, 
     "x": 2235 
    }, 
    { 
     "y": 3393, 
     "x": 336 
    } 
    ] 

I行にグループバウンディングボックスをしたいと思います。

[1,2,3] 
[4,5,6] 
[7,8] 

[編集:明確化]グループの意思決定(例えば、[私は返すアルゴリズムをしたいと思い

Bounding Boxes

:他の言葉では、このイメージにバウンディングボックスの絵図を与えられました4,5,6]および[7,8])は、最小自乗のようなある種の誤差最小化に基づくべきである。

これにはアルゴリズムやライブラリ(できればPythonで)がありますか?

+1

ボックスを通さない(1,2,3)の下に水平線を描くことができるので、(1,2,3)は別です。しかし、あなたはそのように(4,5,6,7,8)を分割することはできません。だから、あなたはどのように(4,5,6)(7,8)の選択肢を定義しますか。 (5,6)(4,8)(7)? – m69

+0

ああ、私は明確にすべきだった - 私はアルゴリズムがいくつかの種類の最小二乗エラー最適化(または代替)を使用しなければならないように問題をそのように枠組みした。境界ボックスは必ずしも明確に分離できない。 – amex

答えて

0

これはクラスタリングの問題だと思います。実際には、x座標を無視できるので、これは1次元クラスタリングの問題だと思います。 k-meansのようないくつかの標準的なクラスタリングアルゴリズムは、あなたが探しているものに相当するクラスタ中心からの二乗和を最小化するのに適しています。残念ながら、彼らは世界的に最良のソリューションを見つけることを保証しません。 1次元クラスタリングは、正確なアルゴリズムがある特殊なケースです。Cluster one-dimensional data optimally?を参照してください。

+0

1Dクラスタリング(4,5,6,7,8)を一括して処理しませんか? – m69

+1

クラスタリングでは、通常、ポイントを分割するための異なるクラスタの数を指定するので、ポイントの集合をグループ化するかどうかは、求めているクラスタの数によって異なります。あるいは、作成されたクラスタの数に応じてペナルティを作成し、最大のペナルティと二乗偏差の合計を求める解を見つけることもできます。次に、あなたが望む部門の種類を得るペナルティシステムを見つけようとします。 – mcdowella

+0

私は、この特定の問題では、x座標を無視すると結果が悪くなると思います。この例では、(4,5,6)(7,8)が(5,6)(4,7,8)よりも優れているという事実は、4と7が水平方向に重なっていることがわかっている場合にのみ明らかになります。 (ペナルティシステムがx座標を再導入できない限り) – m69

関連する問題