ポイントの場所と関連するポイント値に基づいた地理データのクラスタリング


15

経度、緯度、およびこのポイントの3番目のプロパティ値を持つデータポイントを指定します。プロパティ値に基づいてポイントをグループ(地理的サブリージョン)にクラスター化するにはどうすればよいですか?私はグーグルで検索し、この問題は「空間的制約付きクラスタリング」または「地域化」と呼ばれているようだと考えました。しかし、私は地理データの処理に精通しておらず、どの種類のアルゴリズムが適しているか、このタスクにどのpython / Rパッケージが適しているかについてはわかりません。

私が欲しいものについてより直感的なアイデアを与えるために、私のデータ散布図は次のようだとしましょう: ここに画像の説明を入力してください

したがって、各ドットは点、xは経度、yは緯度、カラーマップは値が大きいか小さいかを示します。値の位置と類似性に基づいて、これらのポイントをサブリージョン/グループ/クラスターに分割したいと思います。次のように(直感的なアイデアを示すためだけではありません)。 ここに画像の説明を入力してください

どうすればこれを達成できますか?


あなたの質問はそれが立っているように少し広いです。RまたはPythonパッケージを試しましたか?
ジョンパウエル

@JohnBarça現在、clusterPyパッケージは有用であると思われ、rise-group.org / risem / clusterpy / clusterpy0_9_9 / はその使用方法を示しています。ただし、私のデータは、緯度、経度、値の3つの列ポイントです。ポイント値に基づいて、ポイントをサブリージョングループに分割したいと思います。パッケージの入力形式は、ポリゴンまたはグリッドのように見え、空間ポイントを処理するためにそれを直接使用する方法がわかりません。
エクスカリバー

1
あなたの質問に関連する質問をチェックしてください。例:gis.stackexchange.com/questions/17638/…–
アイリス

@アイリスありがとう!私はウェブページをチェックしましたが、そのような3列の空間ポイントをプロパティで直接処理する方法をまだ見つけることができないようです。
エクスカリバー

地理的クラスタリングの@Excalibur現在、HDBScanをお勧めします。3番目の値に関しては、これはある種の重みと見なすことができます。すべての値を同じ空間に投影しないと、これは難しい作業になります。目的に関する背景情報を提供できますか?
ティモシーダルトン

回答:


4

riojaパッケージは、制約付き階層クラスタリングの機能を提供します。「空間的に制約されている」と考えているものについては、距離に基づいてカットを指定しますが、「地域化」については、k個の最近傍を使用できます。データを距離ベースの座標系に投影することを強くお勧めします。

require(sp)
require(rioja)

data(meuse)
  coordinates(meuse) <- ~x+y
  cdat <- data.frame(x=coordinates(meuse)[,1],y=coordinates(meuse)[,2])
  rownames(cdat) <- rownames(meuse@data)

# Constrained hierarchical clustering 
chc <- chclust(dist(cdat), method="conslink")

# Using kNN with 3 neighbors
chc.n3 <- cutree(chc, k=3) 

# Using distance 
chc.d200 <- cutree(chc, h=200) 

meuse@data <- data.frame(meuse@data, KNN=as.factor(chc.n3), DClust=chc.d200)

opar <- par
  par(mfcol=c(1,2))  
   cols <- topo.colors(length(unique(meuse@data$KNN)))  
    color <- rep("xx", nrow(meuse@data))
      for(i in 1:length(unique(meuse@data$KNN))) {
        v <- unique(meuse@data$KNN)[i] 
          color[(meuse@data$KNN == v)] <- cols[i]
        }
    plot(meuse, col=color, pch=19, main="kNN Clustering")
      box()

    cols <- topo.colors(length(unique(meuse@data$DClust)))  
    color <- rep("xx", nrow(meuse@data))
      for(i in 1:length(unique(meuse@data$DClust))) {
        v <- unique(meuse@data$DClust)[i] 
          color[(meuse@data$DClust == v)] <- cols[i]
        }
    plot(meuse, col=color, pch=19, main="Distance Clustering")
      box() 
par <- opar

1
こんにちは、@ JeffreyEvans、返信ありがとうございます!だから、あなたは私が3番目のプロパティ値を別の種類の座標に投影することを提案していますか?ただし、関連する属性で(lon、lat)を区別し、クラスタリングを行ってポイントを連続領域にするいくつかの既存のアルゴリズムがあるはずだと思います、同じ領域のポイントは同様の値を持つはずです(もちろんいくつかの外れ値があります) 。これを達成できるパッケージはありますか?より直感的な例のために問題を更新しました。ありがとう。
エクスカリバー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.