當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python NetworkX generic_weighted_projected_graph用法及代碼示例


本文簡要介紹 networkx.algorithms.bipartite.projection.generic_weighted_projected_graph 的用法。

用法:

generic_weighted_projected_graph(B, nodes, weight_function=None)

具有用戶指定權重函數的 B 的加權投影。

二分網絡 B 被投影到指定的節點上,權重由用戶指定的函數計算。此函數必須接受兩個節點的鄰域集作為參數並返回整數或浮點數。

如果節點與原始圖中的公共節點有邊,則節點保留其屬性並在結果圖中連接。

參數

BNetworkX 圖

輸入圖應該是二分圖。

nodes列表或可迭代

要投影到的節點(“bottom” 節點)。

weight_function函數

此函數必須接受與此函數相同的輸入圖和兩個節點作為參數;並返回一個整數或浮點數。默認函數計算共享鄰居的數量。

返回

GraphNetworkX 圖

投影到給定節點上的圖。

注意

沒有嘗試驗證輸入圖 B 是否為二分圖。圖和節點屬性(淺)複製到投影圖。

有關如何在 NetworkX 中處理二分圖的更多詳細信息,請參閱 bipartite documentation

例子

>>> from networkx.algorithms import bipartite
>>> # Define some custom weight functions
>>> def jaccard(G, u, v):
...     unbrs = set(G[u])
...     vnbrs = set(G[v])
...     return float(len(unbrs & vnbrs)) / len(unbrs | vnbrs)
...
>>> def my_weight(G, u, v, weight="weight"):
...     w = 0
...     for nbr in set(G[u]) & set(G[v]):
...         w += G[u][nbr].get(weight, 1) + G[v][nbr].get(weight, 1)
...     return w
...
>>> # A complete bipartite graph with 4 nodes and 4 edges
>>> B = nx.complete_bipartite_graph(2, 2)
>>> # Add some arbitrary weight to the edges
>>> for i, (u, v) in enumerate(B.edges()):
...     B.edges[u, v]["weight"] = i + 1
...
>>> for edge in B.edges(data=True):
...     print(edge)
...
(0, 2, {'weight': 1})
(0, 3, {'weight': 2})
(1, 2, {'weight': 3})
(1, 3, {'weight': 4})
>>> # By default, the weight is the number of shared neighbors
>>> G = bipartite.generic_weighted_projected_graph(B, [0, 1])
>>> print(list(G.edges(data=True)))
[(0, 1, {'weight': 2})]
>>> # To specify a custom weight function use the weight_function parameter
>>> G = bipartite.generic_weighted_projected_graph(
...     B, [0, 1], weight_function=jaccard
... )
>>> print(list(G.edges(data=True)))
[(0, 1, {'weight': 1.0})]
>>> G = bipartite.generic_weighted_projected_graph(
...     B, [0, 1], weight_function=my_weight
... )
>>> print(list(G.edges(data=True)))
[(0, 1, {'weight': 10})]

相關用法


注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.algorithms.bipartite.projection.generic_weighted_projected_graph。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。