Coğrafi verileri nokta konumuna ve ilişkili nokta değerlerine dayalı olarak kümeleme


15

Bu noktanın boylam, enlem ve üçüncü özellik değeri olan veri noktaları verildi. Puanları özellik değerine göre nasıl gruplara ayırabilirim (coğrafi alt bölgeler)? Google tarafından aradım ve bu sorunun "mekansal kısıtlı kümeleme" veya "bölgeselleştirme" olarak göründüğünü anladım. Ancak, coğrafi verilerin işlenmesine aşina değilim ve ne tür algoritmaların iyi olduğu ve bu görev için hangi python / R paketlerinin iyi olduğu hakkında bir fikrim yok.

İstediğim şey hakkında daha sezgisel bir fikir vermek için, diyelim ki veri dağılım grafikleri aşağıdaki gibidir: resim açıklamasını buraya girin

Yani her nokta bir nokta, x boylam, y enlem ve renk haritası değerin büyük mü küçük mü olduğunu gösterir. Bu noktaları değerlerin konumlarına ve benzerliklerine göre alt bölgelere / gruplara / kümelere ayırmak istiyorum. Aşağıdaki gibi (tam olarak istediğim şey değil, sadece sezgisel bir fikir göstermek.): resim açıklamasını buraya girin

Peki bunu nasıl başarabilirim?


Sorunuz olduğu gibi biraz geniş. R veya Python paketlerinden herhangi birini denediniz mi?
John Powell

@ JohnBarça Şu anda clusterPy paketinin faydalı göründüğünü düşünüyorum ve rise-group.org/risem/clusterpy/clusterpy0_9_9/… nasıl kullanılacağını gösteriyor. Ancak verilerim üç sütun noktasıdır: enlem, boylam ve değer. Puanları nokta değerine göre alt bölge gruplarına ayırmak istiyorum. Paket giriş formatı bazı çokgen veya ızgara gibi görünüyor ve mekansal noktaları işlemek için doğrudan nasıl kullanacağımı bilmiyorum.
Excalibur

1
sorunuzla ilgili sorulara göz atın, örneğin: gis.stackexchange.com/questions/17638/…
Iris

@Iris Teşekkürler! Web sayfasını kontrol ettim, ancak yine de doğrudan özelliği ile bu tür 3 sütun uzamsal noktaları işlemek için bir yol bulamıyorum görünüyor.
Excalibur

@ Excalibur herhangi bir coğrafi kümeleme için şu anda HDBScan tavsiye ederim. Üçüncü değerinizle ilgili olarak, bu bir tür ağırlık olarak görülebilir, sanırım. Tüm değerleri aynı alana yansıtmadan, bu zor bir görev olabilir. Hedefinizle ilgili arka plan bilgisi verebilir misiniz?
Timothy Dalton

Yanıtlar:


4

Rio paketi, kısıtlanmış hiyerarşik kümeleme için işlevsellik sağlar. "Mekansal olarak kısıtlanmış" olarak düşündüğünüz şey için kesimlerinizi mesafeye göre belirlersiniz, "bölgeselleşme" için en yakın komşuları kullanabilirsiniz. Verilerinizi mesafeye dayalı bir koordinat sisteminde olacak şekilde yansıtmanızı önemle tavsiye ederim.

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
Merhaba @JeffreyEvans, Cevabınız için teşekkürler! Üçüncü mülk değerini başka bir koordinat türüne yansıtmamı mı öneriyorsunuz? Ancak, ilişkili özniteliklerle (lon, lat) ayırt eden ve sonra kümelenme yapan ve sürekli bölgelere nokta yapan bazı mevcut algoritmalar olması gerektiğini düşünüyorum ve aynı bölgelerdeki noktalar benzer değerlere sahip olmalı (elbette bazı aykırı değerler var) . Bunu başarabilecek herhangi bir paket var mı? Sorunumu daha sezgisel bir örnek için güncelledim. Teşekkürler.
Excalibur
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.