簡體   English   中英

是否有 networkx 函數來計算社區之間的邊數?

[英]Is there a networkx functiuon to calculate number of edges between communities?

我使用 Louvain 算法進行社區檢測。 然后 position 社區相對於彼此:創建一個新的加權圖,其中每個節點對應一個社區,權重對應於社區之間的邊數。

我的問題是如何有效地計算“社區之間的邊數”。 我知道我可以為每個社區的每兩個節點執行大量 for 循環。

Networkx 中是否有實現此功能的 function ?

有! induced_graph似乎是您正在尋找的。

此 function 允許您:

  1. 獲得社區的誘導圖作為節點。
  2. 誘導圖中節點之間的 WEIGHT 等於原始圖中節點之間的邊數。

像這樣:

induced_graph = community.induced_graph(p1, giant_component, weight='WEIGHT')
for u,v,a in induced_graph.edges(data=True):
    print(u,v,a)

這將打印Community_a Community_b {'WEIGHT': NumberOfLinks}

這是一個包含 7 個社區的分區示例:

0 1 {'WEIGHT': 8782}
0 0 {'WEIGHT': 15336}
0 3 {'WEIGHT': 9858}
0 4 {'WEIGHT': 4306}
0 2 {'WEIGHT': 1216}
0 7 {'WEIGHT': 1}
0 6 {'WEIGHT': 2}
0 5 {'WEIGHT': 5}
1 1 {'WEIGHT': 10116}
1 3 {'WEIGHT': 6728}
1 4 {'WEIGHT': 4030}
1 2 {'WEIGHT': 667}
1 5 {'WEIGHT': 38}
1 7 {'WEIGHT': 1}
1 6 {'WEIGHT': 1}
2 3 {'WEIGHT': 605}
2 4 {'WEIGHT': 348}
2 2 {'WEIGHT': 470}
3 3 {'WEIGHT': 13921}
3 4 {'WEIGHT': 2805}
3 5 {'WEIGHT': 45}
3 6 {'WEIGHT': 2}
3 7 {'WEIGHT': 1}
4 4 {'WEIGHT': 3273}
4 5 {'WEIGHT': 5}
5 5 {'WEIGHT': 37}
6 6 {'WEIGHT': 1}
7 7 {'WEIGHT': 1}

誘導圖 function 的文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM