Я пытаюсь получить некоторый опыт использования 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.