Как установить разрешение для модульности в python-igraph?

У меня есть график G в формате pajek.net, который я читаю с помощью igraph и использую обнаружение сообщества с помощью метода Лувена. Но я хочу иметь возможность вручную изменить разрешение, чтобы увидеть, как меняется модульность и впоследствии, как меняются кластеры.

Я могу изменить разрешение в gephi перед расчетом модульности. Возможно ли это, если да, то как? Я также готов использовать networkx, если это возможно в networkx.


person user2559578    schedule 08.05.2017    source источник


Ответы (2)


igraph.Graph.community_multilevel(self, weights=None, return_levels=False) имеет параметр return_levels. Если True, сообщества на каждом уровне возвращаются в виде списка. Таким образом, каждый элемент в этом списке будет кластеризацией, соответствующей различному разрешению (то есть уровню) Лувена.


Например, Лувен создает два уровня при кластеризации графа клуба карате.

import igraph as ig
import networkx as nx
# networkx is only needed to load the karate club graph

karate = igraph.Graph.Adjacency((nx.to_numpy_matrix(nx.karate_club_graph()) > 0).tolist(),
                                 mode = igraph.ADJ_UNDIRECTED)
clusterings = igraph.Graph.community_multilevel(karate, return_levels=True)

где clusterings[0] — первый уровень, а clusterings[1] — второй. clusterings[0] будет более точным разрешением, чем clusterings[1], что видно в данном случае, так как clusterings[0] содержит больше сообществ.

>>> # number of communities in the first level is given by
>>> max(clusterings[0].membership) + 1
6
>>> # number of communities in the second level is given by
>>> max(clusterings[1].membership) + 1
4
person rlchqrd    schedule 05.03.2021

Насколько я знаю, igraph.Graph.community_multilevel не раскрывает параметр разрешения. networkx не имеет встроенной реализации метода Лувена, но есть отличный пакет community, который строится поверх networkx и позволяет вам устанавливать параметр разрешения. репозиторий Bitbucket здесь или pip install python-louvain).

person Paul Brodersen    schedule 08.05.2017