Найдите сообщества в большом графе с миллионами вершин в Python, используя igraph и leidenalg - PullRequest
1 голос
/ 31 января 2020

Я пытаюсь получить некоторый опыт использования igraph для поиска сообществ. Следуя документации и используя набор данных клуба zachary karate, я смог найти оптимальное количество сообществ с точки зрения модульности.

import leidenalg as la
import igraph as ig

file = 'data/com-dblp.ungraph.txt'

#G = ig.Graph.Read_Edgelist(file)
G = ig.Graph.Famous('Zachary')

partition = la.find_partition(G, la.ModularityVertexPartition)

print(partition)
print("Modularity of this partition: ", ig.Graph.modularity(G, partition))

ig.plot(partition)

Ниже приводится вывод:

Clustering with 34 elements and 4 clusters
[0] 8, 9, 14, 15, 18, 20, 22, 26, 29, 30, 32, 33
[1] 0, 1, 2, 3, 7, 11, 12, 13, 17, 19, 21
[2] 23, 24, 25, 27, 28, 31
[3] 4, 5, 6, 10, 16
Modularity of this partition:  0.4197896120973044

Однако Как я могу переместить этот подход для работы с большими наборами данных, такими как набор данных DBLP, предоставленный Snap, который имеет 317080 узлов? Когда я пытаюсь использовать тот же подход, он выводит 109092 кластера с модульностью 0,8288599603794473.

...