знайти центроїд кластера точок


27

Під час пошуку в Інтернеті рішення щодо пошуку центроїдів багатокутників трапляються досить часто. Мене цікавить пошук центроїда кластера точок. Середньозважене значення сортів. Я би вдячний, якби хтось міг надати деякі покажчики, псевдокод (а ще краще, пакет R, який вже вирішив це) або посилання, як можна вирішити цю проблему.

EDIT

Конвергенція (знову). iant запропонував метод порівняння координат і використання цього для центроїда. Це саме те, що перейшло мені в голову, коли я побачив правильну картину на цій веб-сторінці .

Ось простий код R, щоб намалювати наступну фігуру, яка демонструє це (× є центроїд):

xcor <- rchisq(10, 3, 2)
ycor <- runif(10, min = 1, max = 100)
mx <- mean(xcor)
my <- mean(ycor)

plot(xcor, ycor, pch = 1)
points(mx, my, pch = 3)

введіть тут опис зображення

EDIT 2

cluster::pam()$medoidsповертає медоїд набору кластерів. Ось приклад безсоромно викрадений у @Joris Meys:

library(cluster)
df <- data.frame(X = rnorm(100, 0), Y = rpois(100, 2))
plot(df$X, df$Y)
points(pam(df, 1)$medoids, pch = 16, col = "red")

1
Чи є причина, що середній центр або центр мінімальної відстані точок не буде достатнім?
Енді Ш

1
@ Роман: Графіка неправильна: потрібно використовувати середнє , а не медіанне. Для 2D просторових хмарних точок є аналоги медіанного центру, але це не один із них (оскільки він залежить від координат): див. Stats.stackexchange.com/q/1927/919 для обговорення.
whuber

1
Я також пропоную перевірити розділ 4 робочої книги про злочини, icpsr.umich.edu/CrimeStat/files/CrimeStatChapter.4.pdf . Це досить ніжне вступ, описує і графічно показує, чому медіана для більш високих розмірів не має унікального рішення, а також описує інші міри центральної тенденції та дисперсії просторових точкових моделей.
Енді Ш

Це стає все цікавішим. Дякую за відповіді. Я розглядаю справу.
Роман Луштрик

2
"запропонував метод середнього значення координат і використання цього для центроїда." Це, власне, визначення центроїда, а не просто те, що робить гарне наближення.
Колін К

Відповіді:


43

просто середні координати X і Y (помножте на вагу, якщо хочете) і є ваш центроїд.


4
+1 Відмінне рішення. Він поширюється і на центроїди на сфероїді (що дуже важливо для уникнення спотворень, пов'язаних з проекцією, коли точки розповсюджуються на великій частині земної кулі): спочатку перетворіть (lat, lon) в 3D (x, y, z) ( геоцентричні) координати, середнє значення їх, а потім перетворіть результат назад у (лат, лон) (ігноруючи майже неминучий факт, що середнє значення 3D буде глибоко нижче поверхні).
whuber

Я оновив своє запитання, щоб відобразити вашу відповідь.
Роман Луштрик

1

Ви можете використовувати функцію центроїда з геосферного пакету.

https://www.rdocumentation.org/packages/geosphere/versions/1.5-5/topics/centroid


Ласкаво просимо до GIS StackExchange і дякуємо за подання відповіді. Будь-ласка, перегляньте тур, щоб дізнатись про наш орієнтований формат запитань. Будь ласка, відредагуйте свою відповідь, щоб включити більше деталей, оскільки ми, як правило, шукаємо довші відповіді (не 1-2 пропозиції), щоб допомогти оригінальному плакату чи майбутнім шукачам. Одна з модифікацій, яку ви можете зробити - це включити причину, на яку ви думаєте, що цей інструмент буде корисною, або фрагмент коду / скріншоти.
посміхник
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.