การจัดกลุ่มข้อมูลทางภูมิศาสตร์ตามตำแหน่งของจุดและค่าจุดที่เกี่ยวข้อง


15

กำหนดจุดข้อมูลด้วยลองจิจูดละติจูดและค่าคุณสมบัติที่สามของจุดนี้ ฉันจะจัดกลุ่มคะแนนเป็นกลุ่ม (ภูมิภาคย่อยทางภูมิศาสตร์) ตามมูลค่าทรัพย์สินได้อย่างไร ฉันค้นหาโดย google และพบว่าปัญหานี้ดูเหมือนว่าจะเรียกว่า "การจัดกลุ่มแบบ จำกัด เชิงพื้นที่" หรือ "การกำหนดภูมิภาค" อย่างไรก็ตามฉันไม่คุ้นเคยกับการจัดการข้อมูลทางภูมิศาสตร์และยังไม่ทราบว่าอัลกอริทึมชนิดใดที่ดีและแพ็คเกจ python / R ใดที่ดีสำหรับงานนี้

หากต้องการให้แนวคิดที่ง่ายขึ้นเกี่ยวกับสิ่งที่ฉันต้องการสมมติว่าแผนการกระจายข้อมูลของฉันมีดังนี้ ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นแต่ละจุดคือจุด, x คือลองจิจูด, y คือละติจูด, และตารางสีแสดงว่าค่านั้นใหญ่หรือเล็ก ฉันต้องการแบ่งจุดเหล่านั้นออกเป็นภูมิภาคย่อย / กลุ่ม / กลุ่มตามสถานที่และความคล้ายคลึงกันของค่า ชอบสิ่งต่อไปนี้ (ไม่ใช่สิ่งที่ฉันต้องการเพียงแค่แสดงความคิดที่เป็นธรรมชาติ): ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นฉันจะบรรลุสิ่งนี้ได้อย่างไร


คำถามของคุณค่อนข้างกว้างพอสมควร คุณลองแพ็คเกจ R หรือ Python แล้วหรือยัง?
John Powell

@ JohnBarçaปัจจุบันฉันคิดว่า packagePy ดูเหมือนว่ามีประโยชน์และเพิ่มขึ้น-group.org/risem/clusterpy/clusterpy0_9_9/…แสดงวิธีการใช้งาน อย่างไรก็ตามข้อมูลของฉันคือจุดสามคอลัมน์: ละติจูดลองจิจูดและค่า ฉันต้องการแบ่งคะแนนเป็นกลุ่มย่อยตามค่าคะแนน รูปแบบอินพุตของแพ็กเกจดูเหมือนว่ารูปหลายเหลี่ยมหรือกริดและฉันไม่ได้คิดวิธีใช้มันโดยตรงเพื่อจัดการกับจุดเชิงพื้นที่
Excalibur

1
ตรวจสอบคำถามที่เกี่ยวข้องกับคำถามของคุณเช่น: gis.stackexchange.com/questions/17638/…
ไอริส

@Iris ขอบคุณ! ฉันตรวจสอบหน้าเว็บแล้ว แต่ดูเหมือนว่าฉันยังไม่สามารถหาวิธีจัดการกับจุดเชิงพื้นที่คอลัมน์ 3 คอลัมน์ดังกล่าวด้วยคุณสมบัติโดยตรง
Excalibur

@Excalibur สำหรับการจัดกลุ่มทางภูมิศาสตร์ใด ๆ ฉันจะแนะนำ HDBScan ในปัจจุบัน เกี่ยวกับค่าที่สามของคุณนี่อาจเป็นน้ำหนักบางอย่างที่ฉันคิด โดยไม่ต้องฉายค่าทั้งหมดลงในพื้นที่เดียวกันนี่อาจเป็นงานที่ยุ่งยาก คุณสามารถให้ข้อมูลพื้นฐานบางอย่างเกี่ยวกับวัตถุประสงค์ของคุณได้หรือไม่?
Timothy Dalton

คำตอบ:


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 ขอบคุณสำหรับการตอบกลับของคุณ! ดังนั้นคุณกำลังแนะนำให้ฉันประเมินค่าคุณสมบัติที่สามเป็นพิกัดชนิดอื่นใช่ไหม อย่างไรก็ตามฉันคิดว่าควรมีอัลกอริทึมที่มีอยู่บางตัวที่แยกความแตกต่าง (lon, lat) กับแอตทริบิวต์ที่เกี่ยวข้องจากนั้นทำการจัดกลุ่มและทำคะแนนในพื้นที่ต่อเนื่องและจุดในพื้นที่เดียวกันจะมีค่าที่คล้ายคลึงกัน . มีแพ็คเกจใดบ้างที่สามารถบรรลุสิ่งนี้ได้? ฉันอัปเดตปัญหาของฉันเพื่อเป็นตัวอย่างที่เข้าใจง่ายยิ่งขึ้น ขอบคุณ
Excalibur
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.