我怎样才能得到每个社区的直径

数据挖掘 Python 聚类 图表 社区
2022-02-10 21:09:30

我正在尝试使用 Jupyter计算我的数据集中每个社区的直径, Zachary 的空手道俱乐部。我创建了一个循环来迭代,但它给了我整个网络的直径,而不是每个社区的直径。

import pandas as pd 
data = pd.read_csv('zachary.txt',sep =" ", header = None)
data_values = data.values
g = Graph()
new_data = data_values.tolist()
data_graph = g.Adjacency(new_data, mode = 'undirected')
s = data_graph.community_infomap()
print(s)
s_List = list(s)
print(s_List)
for ic in s_List:
    y = data_graph.diameter(ic)
    print(y)

我希望输出像“1,2,2“ 或者 ”1,3,1“但实际输出是”5,5,5",这是整个社区的直径。

1个回答

该方法diameter似乎没有将顶点集作为参数。相反,调用diameter适当的诱导子图:

for ic in s_List:
    y = data_graph.induced_subgraph(ic).diameter()
    print(y)

编辑:嗯,我想这取决于你想要测量的内容。虽然这与“社区”的目的相反,但如果路径仅限于社区,则社区中的一对顶点之间的距离可能比它们可以通过图的其余部分时更长。像上面那样归纳子图会错过这一点。