मेरे पास वर्टिसेस के साथ अपेक्षाकृत बड़ा ग्राफ है: वास्तविक दुनिया लेनदेन के 524 एज: 1125। किनारों को निर्देशित किया जाता है और वजन होता है (समावेशन वैकल्पिक है)। मैं ग्राफ के भीतर विभिन्न समुदायों की जांच कोशिश कर रहा हूँ और अनिवार्य रूप से एक विधि की जरूरत है जो:आर: igraph, सामुदायिक पहचान, एज.बेटविनेस विधि, प्रत्येक समुदाय के गिनती/सूची सदस्य?
-Calculates सभी संभव समुदायों
-Calculates समुदायों
का इष्टतम संख्या-Returns के सदस्यों/# प्रत्येक (इष्टतम) समुदाय के सदस्य
अब तक मैं निम्नलिखित कोड को एक साथ खींचने में कामयाब रहा हूं जो विभिन्न समुदायों के अनुरूप रंग कोडित ग्राफ को प्लॉट करता है, हालांकि मुझे नहीं पता कि समुदायों की संख्या को नियंत्रित करने के लिए कैसे (यानी एच के साथ शीर्ष 5 समुदायों साजिश सबसे पुरानी सदस्यता) या किसी विशेष समुदाय के सदस्यों को सूचीबद्ध करें।
library(igraph)
edges <- read.csv('http://dl.dropbox.com/u/23776534/Facebook%20%5BEdges%5D.csv')
all<-graph.data.frame(edges)
summary(all)
all_eb <- edge.betweenness.community(all)
mods <- sapply(0:ecount(all), function(i) {
all2 <- delete.edges(all, all_eb$removed.edges[seq(length=i)])
cl <- clusters(all2)$membership
modularity(all, cl)
})
plot(mods, type="l")
all2<-delete.edges(all, all_eb$removed.edges[seq(length=which.max(mods)-1)])
V(all)$color=clusters(all2)$membership
all$layout <- layout.fruchterman.reingold(all,weight=V(all)$weigth)
plot(all, vertex.size=4, vertex.label=NA, vertex.frame.color="black", edge.color="grey",
edge.arrow.size=0.1,rescale=TRUE,vertex.label=NA, edge.width=.1,vertex.label.font=NA)
क्योंकि बढ़त betweenness विधि इतना खराब प्रदर्शन किया मैं फिर से walktrap विधि का उपयोग कर की कोशिश की:
all_wt<- walktrap.community(all, steps=6,modularity=TRUE,labels=TRUE)
all_wt_memb <- community.to.membership(all, all_wt$merges, steps=which.max(all_wt$modularity)-1)
colbar <- rainbow(20)
col_wt<- colbar[all_wt_memb$membership+1]
l <- layout.fruchterman.reingold(all, niter=100)
plot(all, layout=l, vertex.size=3, vertex.color=col_wt, vertex.label=NA,edge.arrow.size=0.01,
main="Walktrap Method")
all_wt_memb$csize
[1] 176 13 204 24 9 263 16 2 8 4 12 8 9 19 15 3 6 2 1
19 समूहों - बहुत बेहतर!
अब कहें कि मेरे सदस्यों की एक सूची के साथ "ज्ञात क्लस्टर" था और "ज्ञात क्लस्टर" के सदस्यों की उपस्थिति के लिए प्रत्येक मनाए गए क्लस्टर को देखना चाहता था। मिले सदस्यों का प्रतिशत लौट रहा है। निम्नलिखित खत्म करने में असमर्थ ??
list<-read.csv("http://dl.dropbox.com/u/23776534/knownlist.csv")
ength(all_wt_memb$csize) #19
for(i in 1:length(all_wt_memb$csize))
{
match((V(all)[all_wt_memb$membership== i]),list)
}
क्या आप 'ऑल' ऑब्जेक्ट बनाने के लिए भी कोड प्रदान कर सकते हैं? या, यदि यह बहुत बड़ा है, तो कम से कम इसका कुछ छोटा संस्करण? मुझे इस मुद्दे को फिर से बनाने में कठिनाई हो रही है। –
@ जेफएलेन, माफ़ी ने कुछ नमूना फेसबुक डेटा जोड़ा, वास्तव में जिस डेटा पर मैं काम कर रहा हूं वह ~ 50 गुना आकार है .. धन्यवाद –
@ जेफअलेन, धन्यवाद एक लाख जो बहुत मददगार था। आप देखेंगे कि मैंने बेहतर प्रदर्शन के लिए ऊपर समुदाय पहचान विधि बदल दी है। इस बारे में कोई सुझाव कि मैं अपनी मिलान की समस्या को कैसे हल कर सकता हूं? –