使用networkx查找每个集群的模块化

2024-06-28 20:27:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有我的图表,我试图找到每个集群的模块化。为此,我实施了以下步骤:

  1. 我找到了图中最大的连通分量(giantCC)
  2. 我使用贪婪的模块化社区函数找到了图中的所有社区
  3. 现在,我正试图使用networkx中的模块化函数来查找集群模块化,我得到了一个错误

这是我的密码:

cc = sorted(nx.connected_components(g), key=len, reverse=True)
giantCC = g.subgraph(cc[0])
print("Giant cc size: " + str(giantCC.number_of_nodes()))

communities = list(greedy_modularity_communities(giantCC))
communities = sorted(communities, key=len, reverse=True)
print('Number of clusters: ' + str(len(communities)))
communities = [list(x) for x in communities]

cluster_modularity = nx_comm.modularity(giantCC, communities[0])
print('Modularity: ' + str(cluster_modularity))

当我调用函数模块化时,我得到以下错误: enter image description here

为什么我会犯这个错误


Tags: key函数len错误集群模块化社区cc
1条回答
网友
1楼 · 发布于 2024-06-28 20:27:09

问题是您正在使用的模块化计算函数(this one)使用所有通信来计算模块化,因为它是网络分区的一个值。
所以你应该这样使用它:

cluster_modularity = nx_comm.modularity(giantCC, communities)
print('Modularity: ' + str(cluster_modularity))

另外,我建议使用Louvain启发式方法对图进行分区,使用此方法的networkX API已经可用了here

相关问题 更多 >