点のクラスターの重心を見つける


27

Webの検索中に、ポリゴンの重心を見つけるためのソリューションがかなり頻繁に登場します。私が興味を持っているのは、ポイントのクラスターの重心を見つけることです。ソートの加重平均。誰かがいくつかのポインター、疑似コード(または、さらに良いことに、これを既に解決したRパッケージ)、またはこの問題に対処する方法のリンクを提供できれば幸いです。

編集

収束が進行しています(再び)。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)

ここに画像の説明を入力してください

編集2

cluster::pam()$medoidsクラスターのセットのmedoidを返します。これは、@ 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
ポイントの平均中心または最小距離の中心が十分でない理由はありますか?
アンディW

1
@Roman:グラフィックが正しくありません。あなたが使用する必要が平均値、中央値ではないが。2D空間ポイントクラウドには、中央値に類似したものがありますが、これはそれらの1つではありません(座標に依存しているため)。説明については、stats.stackexchange.com / q / 1927/919を参照してください。
whuber

1
私はまた、crimestatワークブックの章4チェックアウトすることをお勧めicpsr.umich.edu/CrimeStat/files/CrimeStatChapter.4.pdfを。これは非常に穏やかなイントロであり、高次元の中央値が独自の解決策を持たない理由を説明し、グラフィックで表示し、空間的傾向の中心傾向と分散の他の尺度を説明します。
アンディW

これはますます興味深いものになっています。ご回答ありがとうございます。私は問題を調査しています。
ローマンルシュトリック

2
「座標を平均化し、それを重心に使用する方法を提案しました。」これは実際、重心の定義であり、単に適切な近似を行うものではありません。
コリンK

回答:


43

X座標とY座標を平均し(必要に応じて重みを乗算)、重心があります。


4
+1すばらしいソリューション。これは、回転楕円体の重心にも拡張されます(ポイントがグローブの大部分に広がっているときに投影関連の歪みを回避するために不可欠です):最初に(lat、lon)を3D(x、y、z)に変換します(地心)座標、それらを平均し、結果を(lat、lon)に変換し直します(3D平均が表面の下に深くなるというほぼ避けられない事実を無視します)。
whuber

あなたの答えを反映するために質問を更新しました。
ローマンルシュトリック

1

geosphereパッケージの図心関数を使用できます。

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


GIS StackExchangeへようこそ。回答を送信していただきありがとうございます。集中してQ&A形式について学習するには、ツアーをご覧ください。回答を編集して詳細を含めてください。通常、元のポスターや将来の検索者を支援するために、長い(1〜2文ではない)回答を探しています。できる変更の1つは、このツールが役立つと思う理由またはコードスニペット/スクリーンショットを含めることです。
スミラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.