Есть ли хороший способ выполнить этот тип добычи?

Я пытаюсь найти точки, наиболее близкие в пространстве по направлениям X и Y (образец набора данных приведен в конце), и ищу, есть ли более разумные подходы для этого, чем мой тривиальный (и непроверенный) подход . График этих точек в пространстве выглядит примерно так, и я пытаюсь найти наборы точек, отмеченные внутри прямоугольников, т.е. результат, который я ищу, представляет собой набор групп:

Group 1: (1,23), (2,23), (3,23)...
Group 2: (68,200), (68,201), (68,203), (68,204), (68,100), (68,101), (68,101)...

enter image description here

Для горизонтальных полос, я думаю, я мог бы просто используйте небольшие скользящие окна размером, скажем, 5 или 10 (что действительно должно быть определено на основе глобальной информации о том, какой размер даст максимальные сгруппированные точки, но я все еще исследую хороший подход) и ищите смежные точки, потому что break больше не будет считаться горизонтальной полосой.

Я предполагаю, что тот же подход работает и для вертикальных полос, но не во всех случаях, потому что есть небольшая разница в горизонтальных и вертикальных полосах: точки должны казаться близкими, чтобы их можно было считать группой по горизонтали, но они могут появляться где угодно, чтобы быть считается частью вертикальной полосы. Обратите внимание на большую вертикальную полосу на рисунке. Итак, я предполагаю, что могу просто искать точки с одинаковой координатой x (в данном случае x = 68), и это должно дать мне много очков.

Кроме этого тривиального решения, я не могу придумать ничего умного, что можно было бы здесь сделать, поскольку эта проблема кажется мне обманчиво простой. Я что-то упустил? Подпадает ли это под какой-то известный класс проблем, и если да, то существует ли хороший и масштабируемый подход для достижения этого?

Пример набора данных:

1,23
1,23
2,23
3,23
4,23
5,23
6,23
7,23
8,23
9,23
10,23
11,23
12,23
13,23
14,23
15,23
16,23
10,33
11,33
12,33
13,33
14,33
15,33
16,33
17,33
18,33
19,33
2,28
2,28
3,28
34,75
34,76
34,76
34,77
34,78
34,79
34,80
34,81
34,82
34,83
34,75
34,76
34,76
34,77
34,78
34,79
34,80
34,81
400,28
400,28
400,28
68,200
68,201
68,203
68,204
68,100
68,101
68,103
68,104
14
задан Legend 16 August 2011 в 09:48
поделиться