मैं बड़ी मात्रा में बहुआयामी वैक्टरों पर पदानुक्रमित agglomerative क्लस्टरिंग पर काम करते हैं, और मैंने देखा कि सबसे बड़ी बाधा दूरी मैट्रिक्स का निर्माण है।एक दूरी मैट्रिक्स के समानांतर निर्माण
''' v = an array (N,d), where rows are the observations
and columns the dimensions'''
def create_dist_matrix(v):
N = v.shape[0]
D = np.zeros((N,N))
for i in range(N):
for j in range(i+1):
D[i,j] = cosine(v[i,:],v[j,:]) # scipy.spatial.distance.cosine()
return D
मैं सोच रहा था जो सबसे अच्छा तरीका यह दिनचर्या के लिए कुछ समानांतरवाद जोड़ने के लिए है: इस कार्य के लिए एक अनुभवहीन कार्यान्वयन निम्नलिखित (यहां अजगर में) है। एक आसान तरीका बाहरी लूप को कई नौकरियों को तोड़ना और असाइन करना होगा, उदा। यदि आपके पास 10 प्रोसेसर हैं, तो i
की विभिन्न श्रेणियों के लिए 10 अलग-अलग नौकरियां बनाएं और फिर परिणाम को समेकित करें। हालांकि यह "क्षैतिज" समाधान काफी सही प्रतीत नहीं होता है। क्या इस कार्य के लिए कोई अन्य समांतर एल्गोरिदम (या मौजूदा पुस्तकालय) हैं? किसी भी मदद को बहुत सराहा जाएगा।
यह नहीं है 'scipy.spatial.distance.cdist (XA, XB,' कोसाइन ')' – TJD
द्वारा किया जाता है यह वास्तव में है, लेकिन क्या वे विधियां समानांतर हैं? मैं वर्तमान में 'pdist' का उपयोग कर रहा हूं लेकिन इसमें बहुत लंबा समय लगता है। – dkar
समानांतर नहीं है, लेकिन शायद तेज़ है क्योंकि आप पाइथन के बजाय मूल सी कोड में अधिक काम कर रहे होंगे। – TJD