बिंदु स्थान और संबद्ध बिंदु मानों के आधार पर भौगोलिक डेटा का क्लस्टरिंग


15

देशांतर, अक्षांश और इस बिंदु के एक तीसरे गुण मान के साथ डेटा बिंदुओं को देखते हुए। मैं संपत्ति के मूल्य के आधार पर समूहों (भौगोलिक उप-क्षेत्रों) में कैसे क्लस्टर कर सकता हूं? मैंने Google द्वारा खोजा और पता लगाया कि इस समस्या को "स्थानिक विवश क्लस्टरिंग" या "क्षेत्रीयकरण" कहा जाता है। हालाँकि, मैं भौगोलिक डेटा को संभालने से परिचित नहीं हूँ और मुझे इस बात का अंदाजा नहीं है कि किस तरह के एल्गोरिदम अच्छे हैं, और कौन सा अजगर / आर पैकेज इस कार्य के लिए अच्छे हैं।

जो मैं चाहता हूं, उसके बारे में अधिक सहज विचार देने के लिए, मान लें कि मेरे डेटा तितर बितर भूखंड निम्नलिखित हैं: यहाँ छवि विवरण दर्ज करें

तो प्रत्येक बिंदु एक बिंदु है, x देशांतर है, y अक्षांश है, और colormap दिखाता है कि मान बड़ा है या छोटा है। मैं उन बिंदुओं को स्थान और मूल्यों की समानता के आधार पर उप क्षेत्रों / समूहों / समूहों में विभाजित करना चाहता हूं। निम्नलिखित की तरह (यह बिल्कुल वैसा नहीं है जैसा मैं चाहता हूं, बस एक सहज विचार दिखाना है।): यहाँ छवि विवरण दर्ज करें

तो मैं इसे कैसे प्राप्त कर सकता हूं?


आपका प्रश्न थोड़ा व्यापक है क्योंकि यह खड़ा है। क्या आपने आर या पायथन पैकेजों में से किसी को आज़माया है?
जॉन पॉवेल

@ JohnBarça वर्तमान में मुझे लगता है कि क्लस्टरपाइप पैकेज उपयोगी लगता है और वृद्धि- group.org/risem/clusterpy/clusterpy0_9_9/… दिखाता है कि इसका उपयोग कैसे करना है। हालाँकि, मेरा डेटा तीन कॉलम पॉइंट है: अक्षांश, देशांतर और मूल्य। मैं बिंदु मान के आधार पर उप-क्षेत्र समूहों में अंक विभाजित करना चाहता हूं। पैकेज इनपुट प्रारूप कुछ बहुभुज या ग्रिड की तरह लगता है, और मैंने यह नहीं सोचा है कि स्थानिक बिंदुओं को संभालने के लिए सीधे इसका उपयोग कैसे करें।
एक्सकैलिबर

1
अपने प्रश्न से संबंधित प्रश्नों की जाँच करें, जैसे: gis.stackexchange.com/questions/17638/…
Iris

@ क्रिस धन्यवाद! मैंने वेबपृष्ठ की जाँच की है, लेकिन लगता है कि मुझे अभी भी सीधे संपत्ति के साथ ऐसे 3 कॉलम स्थानिक बिंदुओं को संभालने का तरीका नहीं मिल रहा है।
एक्सकैलिबर

किसी भी भौगोलिक क्लस्टरिंग के लिए @Excalibur मैं वर्तमान में HDBScan की सिफारिश करूंगा। आपके तीसरे मूल्य के संबंध में, यह कुछ प्रकार के वजन के रूप में देखा जा सकता है, मुझे लगता है। सभी मानों को एक ही स्थान में प्रोजेक्ट किए बिना, यह एक मुश्किल काम हो सकता है। क्या आप अपने उद्देश्य के बारे में कुछ पृष्ठभूमि जानकारी प्रदान कर सकते हैं?
टिमोथी डाल्टन

जवाबों:


4

रिओजा पैकेज विवश श्रेणीबद्ध पदानुक्रम के लिए कार्यक्षमता प्रदान करता है। आपके द्वारा "स्थानिक रूप से विवश" के रूप में जो सोच रहे हैं उसके लिए आपकी दूरी के आधार पर आपके कटौती को निर्दिष्ट करेगा जबकि "क्षेत्रीयकरण" के लिए आप निकटतम पड़ोसियों का उपयोग कर सकते हैं। मैं आपके डेटा को प्रोजेक्ट करने की अत्यधिक सलाह दूंगा, इसलिए यह एक दूरी आधारित समन्वय प्रणाली में है।

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
हाय @ जेफ्री इवांस, आपके उत्तर के लिए धन्यवाद! तो आप यह सुझाव दे रहे हैं कि मैं तीसरे संपत्ति मूल्य को किसी अन्य प्रकार के समन्वय के अधिकार में रखता हूं? हालाँकि, मुझे लगता है कि कुछ मौजूदा एल्गोरिदम होने चाहिए, जो संबंधित विशेषताओं के साथ (लोन, लेट) को अलग करते हैं और फिर क्लस्टरिंग करते हैं और निरंतर क्षेत्रों में अंक बनाते हैं, और एक ही क्षेत्र में अंक समान मान होंगे (बेशक कुछ आउटलेयर हैं) । क्या कोई पैकेज इसे हासिल कर सकता है? मैंने अपनी समस्या को अधिक सहज उदाहरण के लिए अद्यतन किया। धन्यवाद।
२५:१६
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.