2011-06-29 13 views
23

plot(hclust(dist(x))) विधि का उपयोग करके, मैं क्लस्टर पेड़ मानचित्र खींचने में सक्षम था। यह काम करता हैं। फिर भी मैं सभी क्लस्टर की एक सूची प्राप्त करना चाहता हूं, न कि पेड़ आरेख, क्योंकि मेरे पास बड़ी मात्रा में डेटा (जैसे 150 के नोड्स) हैं और साजिश गन्दा हो जाती है।क्लक्चरिंग सूची के लिए क्लस्टरिंग सूची

दूसरे शब्दों में, मान लीजिए कि अगर a b c एक समूह है और अगर d e f g है एक क्लस्टर तो मैं कुछ इस तरह प्राप्त करना चाहते हैं:

1 a,b,c 
2 d,e,f,g 

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

यह कैसे संभव है?

+0

इससे मदद मिल सकती है। http://stackoverflow.com/questions/28378113/match-and-add-the-cluster-number-to-the-original-data/28384937#28384937 – EskimoT

उत्तर

34

मैं आर में उपलब्ध डेटासेट का उपयोग यह दिखाने के लिए करता हूं कि पेड़ को वांछित संख्या में कैसे कटौती करें। परिणाम एक टेबल है।

एक हलचल वस्तु का निर्माण।

hc <- hclust(dist(USArrests), "ave") 
#plot(hc) 

अब आप पेड़ को जितनी चाहें उतनी शाखाओं में काट सकते हैं। मेरी अगली चाल के लिए, मैं पेड़ को दो समूहों में विभाजित कर दूंगा। आपने k पैरामीटर के साथ कटौती की संख्या निर्धारित की है। ?cutree और पैरामीटर h का उपयोग देखें जो आपके लिए अधिक उपयोगी हो सकता है (cutree(hc, k = 2) == cutree(hc, h = 110) देखें)।

cutree(hc, k = 2) 
     Alabama   Alaska  Arizona  Arkansas  California 
      1    1    1    2    1 
     Colorado Connecticut  Delaware  Florida  Georgia 
      2    2    1    1    2 
     Hawaii   Idaho  Illinois  Indiana   Iowa 
      2    2    1    2    2 
     Kansas  Kentucky  Louisiana   Maine  Maryland 
      2    2    1    2    1 
Massachusetts  Michigan  Minnesota Mississippi  Missouri 
      2    1    2    1    2 
     Montana  Nebraska   Nevada New Hampshire  New Jersey 
      2    2    1    2    2 
    New Mexico  New York North Carolina North Dakota   Ohio 
      1    1    1    2    2 
     Oklahoma   Oregon Pennsylvania Rhode Island South Carolina 
      2    2    2    2    1 
    South Dakota  Tennessee   Texas   Utah  Vermont 
      2    2    2    2    2 
     Virginia  Washington West Virginia  Wisconsin  Wyoming 
      2    2    2    2    2 
+0

उत्कृष्ट! धन्यवाद। इससे मुझे लगता है कि कोई भी पैरामीटर "के" के लिए एक अच्छा मूल्य का अनुमान लगा सकता है ताकि डेटा में क्लस्टर की संख्या यह हो कि मैं इसे क्या करना चाहता हूं? दूसरे शब्दों में, क्या होगा यदि मुझे नहीं पता कि मुझे कितने कटौती करने की ज़रूरत है क्योंकि मुझे नहीं पता कि डेटा में कितने क्लस्टर हैं। वास्तव में मैं यह पता लगाने की कोशिश कर रहा हूं कि क्लस्टर और प्रत्येक क्लस्टर के तत्वों की संख्या कहें। क्षमा करें अगर मैं पहले स्पष्ट नहीं था। – dave

+0

@ डेव, क्या आप यह जानना संभव है कि आप किस ऊंचाई पर पेड़ काटना चाहते हैं? यदि हां, पैरामीटर 'एच' का उपयोग करें (देखें'? कट्री')। समारोह समूहों की उचित संख्या (और पत्तियों का निष्ठा) वापस करेगा। –

+1

मैं देखता हूं, शायद यही मैं कर सकता हूं, hclust ऑब्जेक्ट्स में मर्ज मैट्रिक्स, हाइट्स इत्यादि जैसे घटक होते हैं। कहें कि अगर कोई एक ऑब्जेक्ट ऑब्जेक्ट है, तो हम $ ऊंचाई का उपयोग करके संभावित ऊंचाइयों तक पहुंच सकते हैं। तो शायद अधिकतम ऊंचाई का चयन करना वह मैट्रिक्स, मैं संभवतः संभावित क्लस्टर की संख्या का पता लगा सकता हूं। यही वह है जो मैं अपने पढ़ने के माध्यम से खोजने में सक्षम था। – dave

11

कहना

y<-dist(x) 
clust<-hclust(y) 
groups<-cutree(clust, k=3) 
x<-cbind(x,groups) 

अब आप प्रत्येक रिकॉर्ड, क्लस्टर समूह के लिए मिल जाएगा की सुविधा देता है,। आप डेटासेट को भी सबसेट कर सकते हैं:

x1<- subset(x, groups==1) 
x2<- subset(x, groups==2) 
x3<- subset(x, groups==3) 
संबंधित मुद्दे