2010-05-25 14 views
9

मैं scipy/numpy में एक सहसंबंध मैट्रिक्स पर पदानुक्रमित क्लस्टरिंग कैसे चला सकता हूं? मेरे पास 9 कॉलम द्वारा 100 पंक्तियों का मैट्रिक्स है, और मैं 9 परिस्थितियों में प्रत्येक प्रविष्टि के सहसंबंधों द्वारा श्रेणीबद्ध रूप से क्लस्टर करना चाहता हूं। मैं क्लस्टरिंग के लिए दूरी के रूप में 1-पियरसन सहसंबंध का उपयोग करना चाहता हूं। मान लीजिए मेरे पास एक numpy सरणी "एक्स" है जिसमें 100 x 9 मैट्रिक्स है, मैं यह कैसे कर सकता हूं?पाइथन scipy/numpy में सहसंबंध पर पदानुक्रमित क्लस्टरिंग?

मैं hcluster उपयोग करने की कोशिश, इस उदाहरण के आधार पर:

Y=pdist(X, 'seuclidean') 
Z=linkage(Y, 'single') 
dendrogram(Z, color_threshold=0) 

हालांकि, pdist नहीं है जो मैं चाहता के बाद से है कि इयूक्लिडियन दूरी है। कोई विचार?

धन्यवाद।

उत्तर

6

बस correlation मीट्रिक बदलते हैं ताकि पहली पंक्ति हो जाता है:

Y=pdist(X, 'correlation') 

हालांकि, मुझे विश्वास है कि कोड सरल किया जा सकता करने के लिए बस:

Z=linkage(X, 'single', 'correlation') 
dendrogram(Z, color_threshold=0) 

क्योंकि लिंकेज का ख्याल रखेंगे आपके लिए पीडीआईस्ट।

+1

क्या 'सहसंबंध' का मतलब पियरसन या स्पीरमन है? साथ ही, यह वैध दूरी मीट्रिक होने के लिए 1-पियरसन नहीं होना चाहिए जिसका उपयोग पीडीआईस्ट के लिए किया जा सकता है? क्या पीडीआईटी स्वचालित रूप से ऐसा करता है? धन्यवाद। – user248237dfsf

+2

ऐसा लगता है कि यह मेरे लिए 1 - मोती है। आप साइट-पैकेज/एससीपी/स्पेटियल/दूरी.py –

+2

में इसे स्वयं देख सकते हैं। स्पीरमैन सहसंबंध के लिए अकेले वर्णित "सहसंबंध" के लिए यह काफी दुर्लभ है। आमतौर पर यदि स्पीरमैन लोग ऐसा कहेंगे, अन्यथा पियरसन मान लें। – dwf

संबंधित मुद्दे