2012-04-09 11 views
6

का उपयोग कर अंक मैं डेटा की स्थापना की है कि मैं आरआदेश संकुल Kmeans और आर

में

kmeans का उपयोग कर क्लस्टर (4 आयामों के साथ 5000 अंक के) मैं करने के लिए अपने दूरी के अनुसार प्रत्येक क्लस्टर में अंक ऑर्डर करने के लिए चाहते हैं उस क्लस्टर का केंद्र।

बहुत बस, डेटा इस तरह दिखता है (मैं विभिन्न दृष्टिकोण का परीक्षण करने के एक सबसेट का उपयोग कर रहा): सबसे पहले

id Ans Acc Que Kudos 
1 100 100 100 100 
2 85 83 80 75 
3 69 65 30 29 
4 41 45 30 22 
5 10 12 18 16 
6 10 13 10 9 
7 10 16 16 19 
8 65 68 100 100 
9 36 30 35 29 
10 36 30 26 22 

, मैं निम्नलिखित विधि का इस्तेमाल किया 2 समूहों में डाटासेट क्लस्टर के लिए:

(result <- kmeans(data, 2)) 

यह एक kmeans वस्तु है कि निम्नलिखित methods: cluster, centers etc.

लेकिन मैं canno रिटर्न प्रत्येक बिंदु की तुलना करने और आदेशित सूची का उत्पादन करने के तरीके को समझें।

clus <- kmeans(scale(x, scale = FALSE), centers = 3, iter.max = 50, nstart = 10) 
mns <- sapply(split(x, clus$cluster), function(x) mean(unlist(x))) 
result <- dat[order(order(mns)[clus$cluster]), ] 

कौन सा लगता है एक आदेश दिया सूची तैयार करता है लेकिन अगर मैं इसे लेबल करने के लिए बाध्य:

दूसरे, मैं क्रमबद्धता दृष्टिकोण के रूप में एक और एसओ उपयोगकर्ता ने सुझाव दिया here

मैं इन आदेशों का उपयोग करने की कोशिश की क्लस्टर (निम्नलिखित cbind कमांड का उपयोग करके):

result <- cbind(x[order(order(mns)[clus$cluster]), ],clus$cluster) 

मुझे निम्नलिखित परिणाम मिलते हैं, जो ऑर्डर नहीं दिखता है सही ढंग से संपादित करें:

id Ans Acc Que Kudos clus 
1 3 69 65 30 29 1 
2 4 41 45 30 22 1 
3 5 10 12 18 16 2 
4 6 10 13 10 9 2 
5 7 10 16 16 19 2 
6 9 36 30 35 29 2 
7 10 36 30 26 22 2 
8 1 100 100 100 100 1 
9 2 85 83 80 75 2 
10 8 65 68 100 100 2 

मैं कमांड लिखना नहीं चाहता हूं लेकिन समझता हूं कि दृष्टिकोण कैसे काम करता है। अगर कोई इस पर कुछ प्रकाश मदद या फैल सकता है, तो यह वास्तव में बहुत अच्छा होगा।

संपादित :::::::::::

समूहों आसानी से साजिश रची जा सकता है, मैं कल्पना करता वहाँ पाने और अंक और केंद्र के बीच दूरी रैंक करने के लिए एक और अधिक सरल तरीका है।

उपरोक्त समूहों के लिए केंद्र (के = 2 का उपयोग करते समय) निम्नानुसार हैं। लेकिन मुझे नहीं पता कि प्रत्येक व्यक्तिगत बिंदु के साथ इसे कैसे प्राप्त करें और इसकी तुलना कैसे करें।

 Ans Accep  Que  Kudos 
1 83.33333 83.66667 93.33333 91.66667 
2 30.28571 30.14286 23.57143 20.85714 

नायब ::::::::

मैं शीर्ष उपयोग kmeans की जरूरत नहीं है, लेकिन मैं समूहों की संख्या निर्दिष्ट और उन समूहों से अंक की एक आदेश दिया सूची प्राप्त करना चाहते हैं।

+0

यह एक अच्छा सवाल ... जांच करें कि आपने आईडी उपयोग नहीं कर रहे क्लस्टर है (मुझे लगता है कि ऐसे मामले हैं जहां कर सकते हैं कर रहे हैं, लेकिन यह संभावना नहीं है) – Seth

+0

बढ़िया, मैं नहीं करना चाहता मेरी तरफ से आईडी, क्लस्टर क्लस्टर। मैं सवाल में संशोधन करूंगा। धन्यवाद..जे – slotishtype

+2

मुझे विश्वास है कि 'kmeans()' अंतिम क्लस्टर केंद्र भी लौटाता है।वहां से, प्रत्येक बिंदु से दूरी को अपने क्लस्टर के केंद्र में गणना करना बहुत कठिन नहीं होना चाहिए। –

उत्तर

6

यहां एक उदाहरण है जो आप पूछते हैं, ?kmeans से पहले उदाहरण का उपयोग करते हुए। यह शायद बहुत कुशल नहीं है, लेकिन कुछ बनाने के लिए है।

#Taken straight from ?kmeans 
x <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2), 
      matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2)) 
colnames(x) <- c("x", "y") 
cl <- kmeans(x, 2) 

x <- cbind(x,cl = cl$cluster) 

#Function to apply to each cluster to 
# do the ordering 
orderCluster <- function(i,data,centers){ 
    #Extract cluster and center 
dt <- data[data[,3] == i,] 
ct <- centers[i,] 

    #Calculate distances 
dt <- cbind(dt,dist = apply((dt[,1:2] - ct)^2,1,sum)) 
    #Sort 
dt[order(dt[,4]),] 
} 

do.call(rbind,lapply(sort(unique(cl$cluster)),orderCluster,data = x,centers = cl$centers)) 
+0

धन्यवाद @ जोरान, मैंने आपको उकसाया और कल एक बार समझने के बाद स्वीकार करूँगा। मैं दृष्टिकोण को पूरी तरह से समझना चाहता हूं। क्या मैं आपको एक त्वरित सवाल पूछ सकता हूं? क्या यह दृष्टिकोण बहु-आयामी डेटासेट के साथ काम करता है? मैं सिर्फ यह सुनिश्चित करना चाहता हूं कि मेरा दृष्टिकोण सही है और मुझे एमडीएस आदि के कुछ रूपों का उपयोग करने की आवश्यकता नहीं है। धन्यवाद। – slotishtype

+0

@ स्लॉटिशटाइप हां, मुख्य चीजें जिन्हें आप समायोजित करना चाहते हैं वे आयामों की विशिष्ट संख्या हैं (मैंने इसे केवल 2 कॉलम वाले डेटा के लिए कई स्थानों पर कोड किया है) और दूरी मीट्रिक की पसंद; मैंने यहां यूक्लिडियन दूरी का उपयोग किया है, जो कि केमैन के लिए उपयुक्त होना चाहिए। – joran

+0

ब्रिल। आपकी मदद के लिए धन्यवाद, कल मैं स्वीकार करूँगा जब मैं इसके साथ खेलता हूं – slotishtype

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