2012-01-26 5 views
10

clustplot का उपयोग किए बिना मैं आर में क्लस्टर प्लॉट कैसे बना सकता हूं?आर में क्लस्टर प्लॉट कैसे बनाएं?

मैं कुछ क्लस्टरिंग (आर का उपयोग करके) और विज़ुअलाइज़ेशन (HTML5 कैनवास का उपयोग करके) के साथ पकड़ने की कोशिश कर रहा हूं।

असल में, मैं cluster plot बनाना चाहता हूं लेकिन डेटा को साजिश करने के बजाय, मैं 2 डी अंक का एक सेट प्राप्त करना चाहता हूं या समन्वय करता हूं कि मैं कैनवास में खींच सकता हूं और कुछ कर सकता हूं (लेकिन मुझे यकीन है कि कैसे यह करो)। मुझे लगता है कि मैं:

  1. एक समानता मैट्रिक्स पूरे डेटासेट के लिए (जिले का प्रयोग करके)
  2. क्लस्टर बनाएं समानता मैट्रिक्स kmeans या कुछ इसी तरह की (kmeans का प्रयोग करके)
  3. प्लॉट एमडीएस या पीसीए का उपयोग कर परिणाम का उपयोग कर - लेकिन मुझे यकीन है कि चरण 2 और 3 कैसे संबंधित हैं (cmdscale)।

मैं सवालों here, here और here (सबसे उपयोग की पिछले एक किया जा रहा है) के साथ की जाँच की है।

उत्तर

28

क्या आपका ऐसा कुछ मतलब था? क्षमा करें, लेकिन मुझे एचटीएमएल 5 कैनवास के बारे में कुछ भी पता नहीं है, केवल आर ... लेकिन मुझे उम्मीद है कि यह मदद करता है ...

सबसे पहले मैं केमन्स का उपयोग कर डेटा क्लस्टर करता हूं (ध्यान दें कि मैंने दूरी मैट्रिक्स को क्लस्टर नहीं किया है), मैं गणना करता हूं दूरी matix और cmdscale का उपयोग कर साजिश। फिर मैं एमडीएस-प्लॉट में रंग जोड़ता हूं जो कि केमैन द्वारा पहचाने गए समूहों से मेल खाता है। इसके अलावा कुछ अच्छी अतिरिक्त ग्राफिकल विशेषताएं।

आप cmdscale द्वारा बनाई गई वस्तु से निर्देशांक तक पहुंच सकते हैं।

### some sample data 
require(vegan) 
data(dune) 

# kmeans 
kclus <- kmeans(dune,centers= 4, iter.max=1000, nstart=10000) 

# distance matrix 
dune_dist <- dist(dune) 

# Multidimensional scaling 
cmd <- cmdscale(dune_dist) 

# plot MDS, with colors by groups from kmeans 
groups <- levels(factor(kclus$cluster)) 
ordiplot(cmd, type = "n") 
cols <- c("steelblue", "darkred", "darkgreen", "pink") 
for(i in seq_along(groups)){ 
    points(cmd[factor(kclus$cluster) == groups[i], ], col = cols[i], pch = 16) 
} 

# add spider and hull 
ordispider(cmd, factor(kclus$cluster), label = TRUE) 
ordihull(cmd, factor(kclus$cluster), lty = "dotted") 

enter image description here

+1

धन्यवाद @EDi, यह वाकई बहुत अच्छा है। तो, बस स्पष्ट करने के लिए, आप क्लस्टर और फिर एक समानता matirx का निर्माण। फिर आप 2 डी में अंक की स्थिति के लिए एमडीएस का उपयोग करते हैं और फिर आप क्लस्टर पर अपने रिश्ते से अंक रंगते हैं। प्रतिभाशाली। यदि आपके पास मौका है, तो क्या आप यह समझा सकते हैं कि यह क्या करता है: समूह <- स्तर (कारक (kclus $ cluster)) – slotishtype

+1

मेरा संपादन देखें। समूह केवल एक objekt है जिसमें समूहों के नाम शामिल हैं, केवल फॉर-लूप के लिए उपयोग किया जाता है। – EDi

+0

ठीक है, मैं आपका संपादन देखता हूं। एक आखिरी सवाल, क्या आप दूरी मैट्रिक्स को क्लस्टर कर सकते हैं या यह एक पागल कदम है? क्षमा करें, इस समय सीखना और चीजों के माध्यम से बस अपना रास्ता काम करना। – slotishtype

0

यहाँ आप क्लस्टर परिणामों का विश्लेषण, "समन्वय साजिश", "clusplot" पैकेज के भीतर करने के लिए एक ग्राफ पा सकते हैं।

यह पीसीए पर आधारित नहीं है। यह सभी चरों को 0 से 1 की श्रेणी में रखने के लिए फ़ंक्शन स्केल का उपयोग करता है, ताकि आप तुलना कर सकें कि प्रत्येक क्लस्टर के लिए कौन सा क्लस्टर अधिकतम/न्यूनतम औसत रखता है।

install.packages("devtools") ## To be able to download packages from github 
library(devtools) 
install_github("pablo14/clusplus") 
library(clusplus) 

## Create k-means model with 3 clusters 
fit_mtcars=kmeans(mtcars,3) 

## Call the function 
plot_clus_coord(fit_mtcars, mtcars) 

This post बताता है कि इसका उपयोग कैसे करें।