Phân cụm dữ liệu địa lý dựa trên vị trí điểm và giá trị điểm được liên kết


15

Cho các điểm dữ liệu với kinh độ, vĩ độ và giá trị thuộc tính thứ ba của điểm này. Làm cách nào tôi có thể phân cụm các điểm thành các nhóm (tiểu vùng địa lý) dựa trên giá trị tài sản? Tôi đã tìm kiếm bởi google và nhận ra rằng vấn đề này dường như được gọi là "phân cụm hạn chế không gian" hoặc "khu vực hóa". Tuy nhiên, tôi không quen với việc xử lý dữ liệu địa lý và không có ý tưởng nào về loại thuật toán nào là tốt và gói python / R nào tốt cho nhiệm vụ này.

Để đưa ra ý tưởng trực quan hơn về những gì tôi muốn, giả sử các sơ đồ phân tán dữ liệu của tôi như sau: nhập mô tả hình ảnh ở đây

Vì vậy, mỗi dấu chấm là một điểm, x là kinh độ, y là vĩ độ và bản đồ màu cho thấy giá trị đó lớn hay nhỏ. Tôi muốn chia các điểm đó thành các vùng / nhóm / cụm phụ dựa trên vị trí và độ tương tự của các giá trị. Giống như sau (không chính xác những gì tôi muốn, chỉ để hiển thị một ý tưởng trực quan.): nhập mô tả hình ảnh ở đây

Vậy làm thế nào tôi có thể đạt được điều này?


Câu hỏi của bạn hơi rộng khi nó đứng. Bạn đã thử bất kỳ gói R hoặc Python nào chưa?
John Powell

@ JohnBarça Hiện tại tôi nghĩ gói clusterPy có vẻ hữu ích và tăng-group.org/risem/clusterpy/clusterpy0_9_9/ cho thấy cách sử dụng nó. Tuy nhiên, dữ liệu của tôi là ba điểm cột: vĩ độ, kinh độ và giá trị. Tôi muốn chia điểm thành các nhóm tiểu vùng dựa trên giá trị điểm. Định dạng đầu vào gói có vẻ giống như một số đa giác hoặc lưới và tôi chưa tìm ra cách sử dụng trực tiếp để xử lý các điểm không gian.
Excalibur

1
kiểm tra các câu hỏi liên quan đến câu hỏi của bạn, ví dụ: gis.stackexchange.com/questions/17638/iêu
Iris

@Iris Cảm ơn! Tôi đã kiểm tra trang web, nhưng dường như tôi vẫn không thể tìm ra cách xử lý trực tiếp 3 điểm không gian cột như vậy với thuộc tính.
Excalibur

@Excalibur cho bất kỳ phân cụm địa lý nào tôi hiện muốn giới thiệu HDBScan. Liên quan đến giá trị thứ ba của bạn, điều này có thể được coi là một loại trọng lượng, tôi đoán vậy. Nếu không chiếu tất cả các giá trị vào cùng một không gian, đây có thể là một nhiệm vụ khó khăn. Bạn có thể cung cấp một số thông tin cơ bản liên quan đến mục tiêu của bạn?
Timothy Dalton

Câu trả lời:


4

Gói rioja cung cấp chức năng cho phân cụm phân cấp bị ràng buộc. Đối với những gì bạn đang nghĩ là "bị hạn chế về mặt không gian", bạn sẽ chỉ định cắt giảm dựa trên khoảng cách trong khi đối với "khu vực hóa", bạn có thể sử dụng k hàng xóm gần nhất. Tôi đặc biệt khuyên bạn nên chiếu dữ liệu của mình để nó nằm trong hệ thống tọa độ dựa trên khoảng cách.

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
Xin chào @JeffreyEvans, cảm ơn bạn đã trả lời! Vì vậy, bạn đang đề nghị rằng tôi chiếu giá trị tài sản thứ ba vào một loại tọa độ khác phải không? Tuy nhiên, tôi nghĩ nên có một số thuật toán hiện có phân biệt (lon, lat) với các thuộc tính được liên kết và sau đó phân cụm và tạo điểm thành các vùng liên tục và các điểm trong cùng một vùng sẽ có giá trị tương tự (tất nhiên có một số ngoại lệ) . Có gói nào có thể đạt được điều này? Tôi đã cập nhật vấn đề của mình cho một ví dụ trực quan hơn. Cảm ơn.
Excalibur
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.