2014-10-27 3 views
1

Я обнаружил сообщества в большой сети и получил небольшую модульность в igraph Python. Я подозревал результат. Поэтому я снова попытался в графике Р. Модульность была намного выше. Я не знаю причины. Ниже я напишу пример сети и код, который я использовал.Различные результаты функции обнаружения сообщества в igraph R и Python

графа: (. Формат Ncol Граф неориентированный Третий столбец является вес..)

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 

код Р:

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

Смежные вопросы