अनुकूलित करें मैं 1 केएम त्रिज्या के भीतर के सभी निकटतम पड़ोसियों को खोजने की कोशिश कर रहा हूं। यहाँ से निकटतम अंक खोज पेड़ का निर्माण और के लिए मेरी स्क्रिप्ट,निकटतम पड़ोसी खोज
from pysal.cg.kdtree import KDTree
def construct_tree(s):
data_geopoints = [tuple(x) for x in s[['longitude','latitude']].to_records(index=False)]
tree = KDTree(data_geopoints, distance_metric='Arc', radius=pysal.cg.RADIUS_EARTH_KM)
return tree
def get_neighbors(s,tree):
indices = tree.query_ball_point(s, 1)
return indices
#Constructing the tree for search
tree = construct_tree(data)
#Finding the nearest neighbours within 1KM
data['neighborhood'] = data['lat_long'].apply(lambda row: get_neighbors(row,tree))
है कि मैं क्या pysal पेज में पढ़ें, यह कहते हैं -
केडी पेड़ scipy में केडी पेड़ कार्यक्षमता के ऊपर एक बने । यदि scipy 0.12 या इससे अधिक का उपयोग scipy.spatial.cKDTree का उपयोग करता है, अन्यथा scipy.spatial.KDTree का उपयोग करता है।
मेरे मामले में यह सीकेडीटी का उपयोग करना चाहिए। यह नमूना डेटासेट के लिए ठीक काम कर रहा है, लेकिन tree.query_ball_point
परिणामस्वरूप इंडेक्स की सूची देता है। प्रत्येक सूची में 100 तत्व होंगे। मेरे डेटा पॉइंट्स (2 मिलियन रिकॉर्ड्स) के लिए, यह कुछ बड़ा और बड़ा हो रहा है और कुछ बिंदु के बाद स्मृति समस्या के कारण बंद हो जाता है। इसे हल करने के बारे में कोई विचार?
क्या आपने डेटाफ़्रेम में 'पड़ोस' डेटा संग्रहीत करने पर विचार किया है? 'networkx.Graph' दिमाग में आता है। –
क्षमा करें इसके बारे में कभी नहीं सुना। क्या आप एक उदाहरण लिख सकते हैं? मैं कोशिश कर सकता हूँ कि हो सकता है। –
https://networkx.github.io/ ग्राफ़ डेटा के साथ काम करने के लिए एक लाइब्रेरी है। आपके मामले में, मैं स्थान आईडी को कोष्ठक के रूप में संग्रहीत करता हूं और 1 किमी से कम स्थानों के बीच किनारों को जोड़ता हूं। दस्तावेज़ों में एक अच्छा ट्यूटोरियल शामिल है। –