Корреляция между уровнем и перекрытием в сообществе

1
dendo = community.generate_dendrogram(G_fb)
for level in range(len(dendo) - 1) :
    print("partition at level", level,
       "is", partition_at_level(dendo, level))

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

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

Другими словами, существует ли какая-либо корреляция между уровнем и перекрытием? График сообщества приведен ниже. Изображение 174551

Теги:
networkx

1 ответ

0

Я не совсем уверен, что вы спрашиваете, но если вы хотите найти узлы, которые перекрываются между различными сообществами в сети, для этого существует несколько алгоритмов. Вот статья, которая поможет вам начать работу: https://arxiv.org/pdf/1110.5813.pdf. Алгоритм CFinder, в частности, получил много внимания. Здесь вы найдете реализацию алгоритма, который может оказаться полезным. Вот код, предоставленный Tamas для CFinder:

# CFINDER IMPLEMENTATION
#!/usr/bin/env python
from itertools import combinations
import igraph
import optparse

parser = optparse.OptionParser(usage="%prog [options] infile")
parser.add_option("-k", metavar="K", default=3, type=int, help="use a clique size of K")
options, args = parser.parse_args()
if not args:
    parser.error("Required input file as first argument")

k = options.k
g = igraph.load(args[0], format="ncol", directed=False)
cls = map(set, g.maximal_cliques(min=k))

edgelist = []
for i, j in combinations(range(len(cls)), 2):
    if len(cls[i].intersection(cls[j])) >= k-1:
        edgelist.append((i, j))

cg = igraph.Graph(edgelist, directed=False)
clusters = cg.clusters()
for cluster in clusters:
   members = set()
   for i in cluster:
      members.update(cls[i])
print "\t".join(g.vs[members]["name"])

В качестве альтернативы, я считаю, что NetworkX имеет аналогичную интерпретацию, которую можно найти здесь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню