如何使用Python中的NetworkX库计算图的度数为k的节点的平均聚类c(k)?
我可以找到的唯一功能是针对节点(部分或全部),而针对整个图的另一功能。
最佳答案
您可以获取度为k的所有节点,然后获取平均聚类度
例:
>>> G=nx.complete_graph(5)
>>> k=4
>>> nodes_degree_k = [u for u in G.nodes() if G.degree(u) == k]
>>> clustering_coeff = nx.clustering(G, nodes_degree_k)
>>> sum(clustering_coeff.values())/len(clustering_coeff)
1.0
仅通过对节点进行分组,就可以将其扩展到任何程度。
from collections import defaultdict
d = defaultdict(list)
for u in G.nodes():
d[G.degree(u)].append(u)
for degree in d:
clustering_coeff = nx.clustering(G, d[degree])
print(degree, sum(clustering_coeff.values())/len(clustering_coeff))