Создание групп точек из лат / длинных пар с использованием R?

11

У меня есть база данных, которая содержит пары широта / долгота, чтобы определить местоположение достопримечательностей. Я хотел бы сгруппировать точки интереса в группы по 10. Группа должна быть географически локальной и содержать ровно 10 точек. Каждая группа должна иметь минимальную площадь.

Я рассмотрел различные реализации в R, но ни одна из них (что я вижу) не позволяет вам указать определенный размер кластера.

Я ранее спрашивал Группировка точек карты по фиксированным размерам кластера? но я не думаю, что я был достаточно точен в своем вопросе, чтобы получить хороший ответ.


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

Грэм Хилтон
источник
2
Это поможет вам быть более точным в том, что вы ищете. Как бы вы оценили «географически локальный» и «минимальный район»?
whuber
В каких ситуациях «минимальная площадь» и «ровно 10 баллов» не будут взаимоисключающими? Как вы можете ожидать, что оба будут использоваться, например, у вас есть «минимальная площадь» в 1 милю и функция 1, у которой нет других функций в пределах 10 миль (возможно, выброс)?
RyanKDalton
Я ожидаю, что будут некоторые исключения, но с ними можно разобраться вручную. У меня есть набор данных фиксированного размера, и я не возражаю вручную поковырять несколько групп, но я бы очень хотел автоматическое решение для остальных! :)
Грэм Хилтон
Связанный: gis.stackexchange.com/questions/15906/… .
whuber
Описание все еще слишком «волнистое», чтобы его можно было решить автоматически. Можете ли вы сделать данные общедоступными?
BradHards

Ответы:

1

Я думаю, что вы, возможно, ищете инструмент k-ближайшего соседа. Этот тип инструмента можно использовать для определения 10 ближайших соседей всех точек в вашем наборе данных. Кажется, есть несколько разных вариантов для этого (некоторые используют разные алгоритмы или имеют немного отличающиеся функциональные возможности), и я не уверен, что будет лучшим вариантом. Но вот несколько ссылок:

http://stat.ethz.ch/R-manual/R-patched/library/class/html/knn.html http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Classification/kNN

Вам может потребоваться объединить результаты с помощью алгоритма кластеризации или инструмента кластерного ансамбля, чтобы идентифицировать кластеры точек, которые имеют сходные наборы соседей, чтобы получить при классификации точек, где практически нет совпадений. Возможно, вам придется немного поиграться с выводом, но это должно позволить вам автоматизировать большую часть работы.

Некоторые ссылки: http://jmlr.csail.mit.edu/papers/volume3/strehl02a/strehl02a.pdf http://cran.r-project.org/web/packages/clue/vignettes/clue.pdf

Вы также можете найти инструмент кластеризации k-средних, который сделает все это за один шаг и применяет 10 баллов в кластерном правиле (просто разделите общее количество баллов на 10 и выберите его в качестве количества желаемых кластеров для инструмент).

Jezibelle
источник
Кроме того, я нашел учебник по YaRi полезным для R: ahandel.myweb.uga.edu/resources.htm
Джезибель