Обнаружение сообщества louvain в полных взвешенных сетях возвращает только 1 раздел

Я использую реализацию Python-Louvain для обнаружения сообщества в полном взвешенном графике.

Но я получаю только один раздел, содержащий все узлы.

Код:

import community # this is pip install python-louvain
import networkx as nx
import matplotlib.pyplot as plt

# Replace this with your networkx graph loading depending on your format !

# using graph g as a completed graph, weights between 0 and 1

#first compute the best partition
partition = community.best_partition(g)

#drawing
size = float(len(set(partition.values())))
pos = nx.spring_layout(g)
count = 0.
for com in set(partition.values()) :
    count = count + 1.
    list_nodes = [nodes for nodes in partition.keys() if partition[nodes] == com]
    nx.draw_networkx_nodes(g, pos, list_nodes, node_size = 20, node_color = str(count / size))


nx.draw_networkx_edges(g, pos, alpha=0.1)

plt.show()

Я хотел бы извлечь сообщества из полной взвешенной сети.

Я также попробовал girvan_newman ( https://networkx.github.io/documentation/networkx-2.0/reference/algorithms/generated/networkx.algorithms.community.centrality.girvan_newman.html ), но смог обнаружить только 2 сообщества из полного графа 200 узлов (с 198 и 2 узлами).

Работает ли Лувен правильно, чтобы обнаружить сообщества в полном графе? Лучшие предложения?

Всего 1 ответ


Вполне возможно, что выбор используемой модели для этого случая возвращает один блок со всеми узлами, что означает, что недостаточно статистических данных для большего количества блоков.

Вы можете попробовать пакет graph-tool Peixotos, в котором реализована взвешенная стохастическая блочная модель .


Есть идеи?

10000