क्लस्टरिंग भू स्थान निर्देशांक (लट, लंबे जोड़े)


51

जियोलोकेशन क्लस्टरिंग के लिए सही दृष्टिकोण और क्लस्टरिंग एल्गोरिदम क्या है?

मैं क्लस्टर जियोलोकेशन निर्देशांक के लिए निम्न कोड का उपयोग कर रहा हूं:

import numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.vq import kmeans2, whiten

coordinates= np.array([
           [lat, long],
           [lat, long],
            ...
           [lat, long]
           ])
x, y = kmeans2(whiten(coordinates), 3, iter = 20)  
plt.scatter(coordinates[:,0], coordinates[:,1], c=y);
plt.show()

क्या जियोलोकेशन क्लस्टरिंग के लिए K- साधनों का उपयोग करना सही है, क्योंकि यह यूक्लिडियन दूरी का उपयोग करता है, और दूरी समारोह के रूप में हैवरसिन फॉर्मूला नहीं ?


Yoou भी इस तरह के सवाल पर एक नज़र डाल सकते हैं: datascience.stackexchange.com/questions/10063/…
विविड

मुझे लगता है कि k- साधनों की व्यवहार्यता इस बात पर निर्भर करेगी कि आपका डेटा कहां है। यदि आपका डेटा पूरी दुनिया में फैला हुआ है, तो यह काम नहीं करेगा, क्योंकि दूरी यूक्लिडियन नहीं है, जैसा कि अन्य उपयोगकर्ता पहले ही बता चुके हैं। लेकिन अगर आपका डेटा अधिक स्थानीय है, तो k- साधन काफी अच्छा होगा, क्योंकि ज्यामिति स्थानीय रूप से यूक्लिडियन है।
जुआन इग्नासियो गिल

जवाबों:


7

के-साधन इस मामले में सही होना चाहिए। चूँकि k-mean पूरी तरह से ऑब्जेक्ट्स के बीच यूक्लिडियन दूरी के आधार पर समूह बनाने की कोशिश करता है, इसलिए आपको उन स्थानों के क्लस्टर मिलेंगे जो एक दूसरे के करीब हैं।

समूहों की इष्टतम संख्या को खोजने के लिए आप वर्ग दूरी के भीतर समूह की 'कोहनी' की योजना बना सकते हैं। यह उपयोगी हो सकता है ( http://nbviewer.ipython.org/github/nborwankar/LearnDataScience/blob/master/notebooks/D3.%20K-Means%20Austering%20Analysis.ipynb )


3
रैप-अराउंड प्वाइंट हैंडल पर एक-दूसरे के करीब बिंदु कैसे हैं?
कैस्परऑन

1
आपको एक एल्गोरिथ्म खोजने की आवश्यकता है जो एक पूर्व-गणना की गई दूरी मैट्रिक्स लेती है या आपको एक दूरी-फ़ंक्शन की आपूर्ति करने की अनुमति देती है जिसे वह कॉल कर सकती है जब उसे दूरी की गणना करने की आवश्यकता होती है। अन्यथा यह काम नहीं करेगा।
स्पेलमैन जूल

कोहनी की साजिश आपको बिल्कुल भी मदद नहीं कर सकती है क्योंकि कोई कोहनी नहीं हो सकती है। एक ही क्लस्टर संख्या के साथ k- साधनों के कई रन आज़माने के लिए भी सुनिश्चित करें क्योंकि आपको अलग-अलग परिणाम मिल सकते हैं।
ग्रासहॉपर

यह एक खराब विचार है क्योंकि सभी बिंदुओं को जोड़ दिया जाएगा, जो कि मानचित्रण में शायद ही कभी एक अच्छा विचार है।
रिचर्ड

52

K- साधन यहाँ सबसे उपयुक्त एल्गोरिथ्म नहीं है।

कारण यह है कि k- साधन को विचरण को कम करने के लिए डिज़ाइन किया गया है । यह, निश्चित रूप से, एक सांख्यिकीय और सिग्नल प्रोस्केजिंग बिंदु से प्रदर्शित होना है, लेकिन आपका डेटा "रैखिक" नहीं है।

चूँकि आपका डेटा अक्षांश, देशांतर प्रारूप में है, इसलिए आपको एक एल्गोरिथ्म का उपयोग करना चाहिए , जो विशेष रूप से भू-स्थानिक दूरी के कार्यों में मनमानी दूरी के कार्यों को संभाल सकता है। पदानुक्रमित क्लस्टरिंग, PAM, CLARA, और DBSCAN इसके लोकप्रिय उदाहरण हैं।

https://www.youtube.com/watch?v=QsGOoWdqaT8 ऑप्टिक्स क्लस्टरिंग की सिफारिश करता है।

जब आप + -180 डिग्री के रैप-अराउंड के करीब बिंदुओं पर विचार करते हैं, तो k- साधनों की समस्याओं को देखना आसान है। यहां तक ​​कि अगर आप k- साधनों को हैकर्स दूरी का उपयोग करने के लिए हैक करते हैं, तो अपडेट चरण में जब यह मतलब होता है कि परिणाम बुरी तरह से खराब हो जाएगा। सबसे खराब मामला है, के-मीन्स कभी नहीं जुटेंगे!


क्या आप भू-स्थान डेटा के लिए अधिक उपयुक्त क्लस्टरिंग विधि सुझा सकते हैं?
एलेक्स स्पर्लिंग

क्या आपने तीसरे पैराग्राफ पर ध्यान दिया है?
एनी-मूस

7

जीपीएस निर्देशांक को सीधे जियोश में परिवर्तित किया जा सकता है । जियोआश पृथ्वी को अंकों की संख्या के आधार पर अलग-अलग आकार की "बाल्टियों" में विभाजित करता है (छोटे जियोश कोड बड़े क्षेत्र बनाते हैं और छोटे क्षेत्रों के लिए लंबे कोड)। Geohash एक समायोज्य सटीक क्लस्टरिंग विधि है।


यह वही 180 डिग्री की रैप-अराउंड समस्या से पीड़ित है जो उत्तर में जुड़े विकिपीडिया लेख के अनुसार के-मीन्स करता है।
नॉर्मन एच

हां! प्लस कोड बहुत बेहतर हैं। अधिक कोड
ब्रायन

इस समाधान के लिए एक लाभ यह है कि जब तक आप एक बार जियोहैश की गणना करते हैं, तब तक दोहराए जाने वाले तुलनात्मक संचालन बहुत तेज़ी से होंगे।
नॉर्मन एच

जियोशॉट में बकेट-एज मामलों के मुद्दे होंगे - प्रत्येक बकेट के मनमाने किनारों के आधार पर दो अलग-अलग बिंदुओं को अलग-अलग बाल्टियों में रखा जाएगा।
डैन जी

5

मैं शायद अपने उत्तर के साथ बहुत देर हो चुकी हूं, लेकिन अगर आप अभी भी भू-खंड से निपट रहे हैं, तो आपको यह अध्ययन दिलचस्प लग सकता है । यह भौगोलिक डेटा को वर्गीकृत करने के लिए दो बिल्कुल अलग दृष्टिकोणों की तुलना में संबंधित है: K- साधन क्लस्टरिंग और अव्यक्त वर्ग विकास मॉडलिंग।

अध्ययन से छवियों में से एक:

यहाँ छवि विवरण दर्ज करें

लेखकों ने निष्कर्ष निकाला कि अंतिम परिणाम कुल मिलाकर समान थे, और कुछ ऐसे पहलू थे जहां LCGM ने K- साधनों को पछाड़ दिया।


5

इसके लिए आप HDBSCAN का उपयोग कर सकते हैं । अजगर पैकेज में हावरसाइन दूरी के लिए समर्थन होता है जो कि लैट / लोन बिंदुओं के बीच की दूरी को ठीक से गणना करेगा।

के रूप में किए गए दस्तावेज़ों का उल्लेख , आपको पहले इस काम करने के लिए रेडियंस में अपने अंक में परिवर्तित करने की आवश्यकता होगी। निम्नलिखित psuedocode चाल करना चाहिए:

points = np.array([[lat1, lon1], [lat2, lon2], ...])
rads = np.radians(points)
clusterer = hdbscan.HDBSCAN(min_cluster_size=N, metric='haversine')
cluster_labels = clusterer.fit_predict(points)

0

स्थानों को क्लस्टर करने के लिए k- साधन एल्गोरिथ्म एक बुरा विचार है। आपके स्थानों को दुनिया भर में फैलाया जा सकता है और आपके द्वारा अनुमानित किए जाने वाले क्लस्टर की संख्या नहीं है, यही नहीं यदि आप क्लस्टर को 1 के रूप में रखते हैं तो स्थानों को 1 एकल क्लस्टर में समूहीकृत किया जाएगा। मैं उसी के लिए श्रेणीबद्ध क्लस्टरिंग का उपयोग कर रहा हूं।



-1

HBScan हमेशा के लिए ले जाएगा के रूप में Km Km क्लस्टरिंग के साथ जाओ। मैंने इसे एक परियोजना के लिए आज़माया और वांछित परिणामों के साथ माइग्रेन का उपयोग करते हुए समाप्त हो गया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.