Я пытаюсь выполнить пакетный запуск louvain модульного раздела python моей сети по крайней мере 100 раз. Мне нужно сохранить разделы и сохранить показатель модульности после раздела. Есть ли способ получить их оба? Я пробовал документацию и пример, и он возвращает только разделы, но не статистика модульности. Пожалуйста, укажите мне правильное направление, и я буду чрезвычайно признателен за вашу помощь.

0
mparida 24 Апр 2017 в 08:18

2 ответа

Лучший ответ

Вы можете вычислить оценку модульности, используя igraph.Graph.community():

import igraph

g = igraph.Graph.Erdos_Renyi(n=100, p=0.1)
clusters = g.community_multilevel()
modularity_score = g.modularity(clusters.membership)
1
Paul Brodersen 24 Апр 2017 в 08:42

Вот как можно оценить модульность Q, используя алгоритм louvain в igraph.

Важно . Если у вас есть взвешенные матрицы смежности, НЕ ЗАБЫВАЙТЕ аргумент weights=graph.es['weight'] в следующих функциях!

import numpy as np
from igraph import *

W = np.random.rand(10,10)
np.fill_diagonal(W,0.0)

graph = Graph.Weighted_Adjacency(W.tolist(), mode=ADJ_UNDIRECTED, attr="weight", loops=False)

louvain_partition = graph.community_multilevel(weights=graph.es['weight'], return_levels=False)

modularity1 = graph.modularity(louvain_partition, weights=graph.es['weight'])

print("The modularity Q based on igraph is {}".format(modularity1))

The modularity Q based on igraph is 0.02543865641866777
0
seralouk 30 Мар 2020 в 13:26
43580304