आर में क्लस्टरिंग
ggdendro और क्लस्टर के साथ
क्लस्टरिंग क्या है?
क्लस्टर विश्लेषण बिना किसी पूर्व ज्ञान के श्रेणियों को अवलोकन प्रदान करता है। यह वर्गीकरण की तुलना में भिन्न है , जो प्रशिक्षण डेटा से भविष्य कहनेवाला मॉडलिंग का उपयोग करके पूर्व-निर्दिष्ट श्रेणियों के लिए टिप्पणियों को असाइन करना चाहता है।
क्लस्टरिंग मशीन लर्निंग और डेटा माइनिंग में अप्रशिक्षित सीखने की एक विधि है , और यह जटिल डेटा की खोज और समझने और डेटा में सार्थक पैटर्न खोजने के लिए उपयोगी है।
इस आलेख में
मैं बुनियादी घरेलू वस्तुओं की बिक्री से संबंधित कुछ डेटा का पता लगाना चाहता हूं, और यह देखना चाहता हूं कि डेटा में कोई संबंध है या नहीं। मैं पदानुक्रमित का उपयोग करूंगा और k का अर्थ क्लस्टरिंग होगा।
मैं क्लस्टरिंग से संबंधित कुछ बुनियादी विचारों और पदानुक्रमित क्लस्टरिंग के उदाहरणों की व्याख्या करूँगा , k का अर्थ है क्लस्टरिंग, और k- साधन क्लस्टरिंग के लिए क्लस्टर की इष्टतम संख्या कैसे ज्ञात करें।
दूरी मैट्रिक्स
डेटा में एक संरचना या पैटर्न खोजने के लिए क्लस्टरिंग के लक्ष्य के साथ एक ही समूह में वस्तुओं के बीच समानता और विभिन्न समूहों में वस्तुओं के बीच असमानता के आधार पर डेटा को समूहों में विभाजित किया जाता है।
एक दूरी मैट्रिक्स का उपयोग आमतौर पर विभिन्न समूहों की मध्यस्थता के लिए किया जाता है।
दूरी एक उच्च आयामी स्थान में वस्तुओं के बीच के अंतर को निर्धारित करती है, और दूरी माप का चुनाव क्लस्टरिंग परिणाम को प्रभावित करेगा।
सामान्य दूरी उपायों में शामिल हैं:
- यूक्लिडियन दूरी: यह सबसे अधिक इस्तेमाल किया जाने वाला दूरी माप है और इसे बहुआयामी अंतरिक्ष में दो बिंदुओं के बीच सीधी रेखा की दूरी के रूप में परिभाषित किया जाता है। यह पाइथागोरस प्रमेय का सामान्यीकरण है ।
- मैनहट्टन दूरी: इस दूरी माप को शहर ब्लॉक दूरी के रूप में भी जाना जाता है और इसे दो बिंदुओं के निर्देशांक के बीच पूर्ण अंतर के योग के रूप में परिभाषित किया जाता है।
पदानुक्रमित क्लस्टरिंग
आँकड़ों में क्लस्टर विश्लेषण डेटा में समूहों का पता लगाने की एक विधि है जिसमें कोई पूर्व-निर्धारित समूह परिभाषाएँ नहीं हैं।
पदानुक्रमित क्लस्टरिंग का उपयोग करने के लिए, हमें समूहों के बीच असमानताओं को परिभाषित करने की आवश्यकता है।
हम इसका उपयोग कर सकते हैं:
सिंगल लिंकेज
निकटतम पड़ोसी या न्यूनतम दूरी के रूप में भी जाना जाता है, जिसे दो समूहों में किसी भी दो बिंदुओं के बीच की सबसे छोटी दूरी के रूप में परिभाषित किया जाता है। दो समूहों के बीच बिंदुओं की निकटतम जोड़ी द्वारा निर्धारित।
पूर्ण जुड़ाव
यह एक ऐसी विधि है जिसमें दो समूहों के बीच की दूरी को दो समूहों में किन्हीं दो बिंदुओं के बीच की अधिकतम दूरी के रूप में परिभाषित किया जाता है। दो समूहों के बीच की दूरी दो समूहों के बीच बिंदुओं की सबसे दूर की जोड़ी द्वारा निर्धारित की जाती है।
औसत असमानता
औसत लिंकेज के रूप में भी जानते हैं, और दो समूहों के बीच औसत असमानता की गणना करने के लिए, हम दो समूहों में सभी जोड़े बिंदुओं के बीच जोड़ीदार दूरी का औसत लेते हैं।
k-मतलब क्लस्टरिंग
K-मतलब क्लस्टरिंग एक डेटासेट को k क्लस्टर्स में विभाजित करता है, और इसका उद्देश्य उन इष्टतम समूहों को खोजना है जो डेटा बिंदुओं और उनके असाइन किए गए क्लस्टर केंद्र के बीच वर्ग दूरी के योग को कम करते हैं।
K- साधन क्लस्टरिंग का उपयोग विभिन्न प्रकार के अनुप्रयोगों के लिए किया जा सकता है:
- छवि विभाजन
- ग्राहक विभाजन
- अपराध का पता लगाने
- मार्केटिंग ऑप्टिमाइज़ेशन और बहुत कुछ…
मेरा सेटअप
library(tidyverse)
library(knitr)
knitr::opts_chunk$set(message = FALSE)
knitr::opts_chunk$set( fig.retina=2,fig.dpi = 96)
knitr::opts_chunk$set(comment="", fig.align="center", tidy=TRUE , cache=TRUE)
library(broom)
library(ggdendro)
library(cluster)
library(patchwork)
data <- read.csv("C:/Data/household_goods.csv")
skimr::skim(data)
- आपको लाइब्रेरी को लोड करने की आवश्यकता नहीं है, बस स्किमर :: स्किम ("आपका डेटासेट") चलाएं
data %>% head(n=8)
df <- data %>% select(c(UnitsSold,UnitPrice,UnitCost)) %>% arrange()
df |> head(n=8)
data %>% ggplot() +
geom_point(mapping = aes(x= as.factor(ItemType) ,
y = UnitsSold , col = ItemType)) +
labs(title = "Items of basic necessity" ,
color = "items" , x = "Item" , y = "Units Sold") +
theme(axis.text.x = element_text( color="darkgrey",
size=12, angle=90),
axis.text.y = element_text( color="darkgrey",
size=12)) +
theme(text = element_text(face="bold",size = 12))
ध्यान दें कि मैंने क्लस्टर आयतें बनाई हैं, और क्लस्टर 1,6 और 13 निर्दिष्ट किए हैं। k = 13 विनिर्देश के कारण 13 क्लस्टर हैं
H <- hclust(dist(df))
plot(H)
rect.hclust(H, k=3, border="red")
rect.hclust(H, k=13, border="blue",
which = c(1,6, 13))
मैं विभिन्न असमानताओं वाले पदानुक्रमित समूहों का एक उदाहरण बनाऊंगा:
hc <- df %>%
dist() %>%
hclust()
hc1 <- df %>%
dist() %>%
hclust(method='single')
hc2 <- df %>%
dist() %>%
hclust(method='average')
hc3 <- df %>%
dist() %>%
hclust(method='complete')
hc4 <- df %>%
dist() %>%
hclust(method='centroid')
p1<-ggdendrogram(hc, segments = TRUE,
rotate = FALSE) +
labs(title = "Dendrogram")+
theme_dendro()
p2<-ggdendrogram(hc1, segments = TRUE,
rotate = FALSE) +
labs(title = "Single Linkage Dendrogram")+
theme_dendro()
p3<-ggdendrogram(hc2, segments = TRUE,
rotate = FALSE) +
labs(title = "Average Linkage Dendrogram")+
theme_dendro()
p4<-ggdendrogram(hc3, segments = TRUE,
rotate = FALSE) +
labs(title = "Complete Linkage Dendrogram")+
theme_dendro()
p5<-ggdendrogram(hc4, segments = TRUE,
rotate = FALSE) +
labs(title = "Centroid Linkage Dendrogram")+
theme_dendro()
p1 + p2 + p3 + p4 +p5 + plot_layout(ncol = 2, heights = 3) # use patchwork
उपयोग की गई असमानता के आधार पर संरचनाओं में अंतर पर ध्यान दें।
जब चयनित दूरी माप की बात आती है तो इसमें भी अंतर होता है:
dist <-dist(df,"euclidean")
clust.complete<-hclust(dist,method="complete")
p1<-ggdendrogram(clust.complete,labels = FALSE) +
labs(title = "Complete Linkage Dendrogram with euclidean distance")
dist1 <-dist(df,"manhattan")
clust.complete1<-hclust(dist1,method="complete")
p2<-ggdendrogram(clust.complete1,labels = FALSE) +
labs(title = "Complete Linkage Dendrogram with manhattan distance")
p1 + p2 + plot_layout(ncol = 2, heights = 1)
के-मतलब क्लस्टरिंग
यहां मैं डेटा को df में लेता हूं , और 5 क्लस्टर केंद्र बनाता हूं
clc <- kmeans(x = df, centers = 5)
df$cluster <- as.character(clc$cluster)
head(df)
clc$centers
- कथानक का एक आधार आर संस्करण
plot(df[c("UnitCost", "UnitsSold")], col = clc$cluster,
main = "K means clustering with data split into 5 clusters")
points(clc$centers[,c("UnitCost", "UnitsSold")],
col = "darkorange", pch = 16, cex = 1.5)
grid()
ggplot() +
geom_point(data = df,
mapping = aes(x = UnitPrice,
y = UnitsSold,
colour = cluster)) +
geom_point(mapping = aes(x = clc$centers[,'UnitPrice']
, y = clc$centers[,'UnitsSold']),color = "red", size = 4)+
theme_light() +
labs(title = "K means clustering with data split into 5 clusters")
km <- tibble(k = 1:10) %>%
mutate(
model = map(k, ~ kmeans(df, centers = ., nstart = 20)),
tidied = map(model, glance)
) %>%
unnest(tidied)
km
ggplot(km) +
geom_line(aes(x=k, y=tot.withinss))
cl <- kmeans(x = df, centers = 3)
df$cluster <- as.character(cl$cluster)
ggplot() +
geom_point(data = df,
mapping = aes(x = UnitPrice,
y = UnitsSold,
colour = cluster)) +
geom_point(mapping = aes(x = cl$centers[,'UnitPrice'] ,
y = cl$centers[,'UnitsSold'] ),color = "red", size = 4) +
labs(title = "K means clustering with 3 clusters")
उपरोक्त रेखांकन से, हम देख सकते हैं कि डेटा समूहों में वस्तुओं के बीच समानता और असमानता विभिन्न डेटा विभाजन या समूहों का कारण बनती है।
समूह सदस्यता या नहीं निर्धारित करने में दूरियां वास्तव में एक बड़ी भूमिका निभाती हैं।
जैसा कि ऊपर दिखाया गया है, वर्ग दूरी का योग खोजने के लिए, के-साधनों के लिए क्लस्टर की इष्टतम मात्रा खोजने के लिए उपयोग किया जाता है।
दूरियाँ, समानताएँ और असमानताएँ डेटा बिंदुओं के समूह को निर्धारित करती हैं।
मुझे आशा है कि आपने आनंद लिया और मेरे लेख को उपयोगी पाया!
आर, जूलिया, पायथन और अनुप्रयुक्त आँकड़ों पर अधिक लेखों के लिए मुझे फॉलो करें!
यदि आप अपने डेटा की पाइपिंग ( %>% या |> ) के बारे में अधिक जानना चाहते हैं, तो नीचे मेरा लेख देखें:
आर के साथ पाइपिंग
![क्या एक लिंक्ड सूची है, वैसे भी? [भाग 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































