【发布时间】:2015-05-16 08:43:12
【问题描述】:
我正在研究网络中的检测社区。p>
我正在使用networkx和Python,我需要实现这个算法:http://arxiv.org/pdf/0803.0476.pdf
这就是我尝试解决的方法: 首先,我制作列表列表,其中包含与图中节点一样多的列表(社区),以便我可以按索引找到社区。然后对于每个节点,我找到它们的邻居并计算模块化增益,如下所示:
q1 = (sum_in+ki_in)/float(2*m) - pow(sum_tot+ki,2)/float(pow(2*m,2))
q2 = sum_in/float(2*m) - pow(sum_tot, 2)/float(pow(2*m,2)) -pow(ki,2)/float(pow(2*m,2))
q = q1 - q2
在哪里
for x in temp: # list of neighbors of node i
sum_in += G.degree(x, weight='weight')
sum_tot += G.in_degree(x, weight='weight')
ki_in += weights[i, x]
ki = G.in_degree(i, weight='weight')
然后我找到最大 q 并将节点 I 移动到新社区。 但这不起作用,似乎我在公式中犯了错误,因为大量节点算法找不到社区。p>
有谁知道如何解决这个问题?
【问题讨论】:
标签: python networkx modularity