R Language
पदानुक्रम के साथ पदानुक्रमिक क्लस्टरिंग
खोज…
परिचय
stats
पैकेज पदानुक्रमित क्लस्टरिंग करने के लिए hclust
फ़ंक्शन प्रदान करता है।
टिप्पणियों
हिस्टस्ट के अलावा, अन्य तरीके उपलब्ध हैं, क्लस्टरिंग पर सीआरएएन पैकेज व्यू देखें ।
उदाहरण 1 - हिस्टस्ट का मूल उपयोग, डेंड्रोग्राम का प्रदर्शन, प्लॉट क्लस्टर
क्लस्टर लाइब्रेरी में रस्सिनी डेटा होता है - उदाहरण के लिए क्लस्टर विश्लेषण के लिए डेटा का एक मानक सेट।
library(cluster) ## to get the ruspini data
plot(ruspini, asp=1, pch=20) ## take a look at the data
hclust एक दूरस्थ मैट्रिक्स की अपेक्षा करता है, मूल डेटा की नहीं। हम डिफ़ॉल्ट मापदंडों का उपयोग करके पेड़ की गणना करते हैं और इसे प्रदर्शित करते हैं। हैंग पैरामीटर पैरामीटर को आधार रेखा के साथ पेड़ की सभी पत्तियों तक बढ़ाता है।
ruspini_hc_defaults <- hclust(dist(ruspini))
dend <- as.dendrogram(ruspini_hc_defaults)
if(!require(dendextend)) install.packages("dendextend"); library(dendextend)
dend <- color_branches(dend, k = 4)
plot(dend)
चार क्लस्टर देने के लिए पेड़ को काटें और क्लस्टर द्वारा बिंदुओं को रंग देने वाले डेटा को दोहराएं। k क्लस्टर्स की वांछित संख्या है।
rhc_def_4 = cutree(ruspini_hc_defaults,k=4)
plot(ruspini, pch=20, asp=1, col=rhc_def_4)
यह क्लस्टरिंग थोड़ी विषम है। हम पहले डेटा को स्केल करके एक बेहतर क्लस्टरिंग प्राप्त कर सकते हैं।
scaled_ruspini_hc_defaults = hclust(dist(scale(ruspini)))
srhc_def_4 = cutree(scaled_ruspini_hc_defaults,4)
plot(ruspini, pch=20, asp=1, col=srhc_def_4)
क्लस्टर की तुलना करने के लिए डिफ़ॉल्ट असमानता उपाय "पूर्ण" है। आप विधि पैरामीटर के साथ एक अलग माप निर्दिष्ट कर सकते हैं।
ruspini_hc_single = hclust(dist(ruspini), method="single")
उदाहरण 2 - hclust और outliers
पदानुक्रमित क्लस्टरिंग के साथ, आउटलेयर अक्सर एक-बिंदु क्लस्टर के रूप में दिखाई देते हैं।
आउटलेर्स के प्रभाव को स्पष्ट करने के लिए तीन गाऊसी वितरण उत्पन्न करें।
set.seed(656)
x = c(rnorm(150, 0, 1), rnorm(150,9,1), rnorm(150,4.5,1))
y = c(rnorm(150, 0, 1), rnorm(150,0,1), rnorm(150,5,1))
XYdf = data.frame(x,y)
plot(XYdf, pch=20)
क्लस्टर संरचना बनाएँ, इसे तीन क्लस्टर में विभाजित करें।
XY_sing = hclust(dist(XYdf), method="single")
XYs3 = cutree(XY_sing,k=3)
table(XYs3)
XYs3
1 2 3
448 1 1
hclust ने दो आउटलेयर पाए और बाकी सब कुछ एक बड़े क्लस्टर में डाल दिया। "वास्तविक" क्लस्टर प्राप्त करने के लिए, आपको k को उच्चतर सेट करने की आवश्यकता हो सकती है।
XYs6 = cutree(XY_sing,k=6)
table(XYs6)
XYs6
1 2 3 4 5 6
148 150 1 149 1 1
plot(XYdf, pch=20, col=XYs6)
इस StackOverflow पोस्ट में गुच्छों की संख्या को चुनने के बारे में कुछ मार्गदर्शन है, लेकिन पदानुक्रमिक क्लस्टरिंग में इस व्यवहार के बारे में पता होना चाहिए।