2014-10-27 101 views
1

我在大型網絡中檢測到社區,並且在igraph Python中的模塊化程度較低。我懷疑結果。所以我在igraph R中再次嘗試。模塊化要高得多。我不知道原因。在下面,我將寫一個示例網絡和我使用的代碼。igraph R和Python中社區檢測功能的不同結果

圖表:(NcoI位格式是無向圖的第三列是重量。)

1 2 123 
1 3 32 
2 3 523 
3 6 3 
6 5 11 
6 8 234 
5 8 324 
3 9 234 
9 11 32 
9 12 5534 
9 13 32 
11 12 322 
11 13 3 
12 13 32 

R代碼裏面:

library(igraph) 
g=read.graph('graph.ncol',format='ncol',directed=F) 
c=multilevel.community(g) 
modularity(c) 
[1] 0.2845496 

Python代碼:

import igraph 
g=igraph.Graph.Read_Ncol('graph.ncol',directed=False) 
c=g.community_multilevel() 
c.modularity 
0.4974489795918367 

在我的原始網絡中,使用R和Python的社區數量大不相同。它不僅是多層次的方法。我也嘗試了fastgreedy方法。使用R和Python的結果也不同。

回答

2

R接口在計算社區結構和模塊性時會自動使用來自weight屬性的權重,而Python接口不會。例如,在Python中:

>>> g=load("test.ncol", directed=False) 
>>> g.multilevel_community().q 
0.4974489795918367 
>>> g.multilevel_community(weights=g.es["weight"]).q 
0.2845496103894415 
+0

謝謝!我應該小心使用igraph Python。 – Ben 2014-10-27 13:06:54