networkx.generators.community.LFR_benchmark_graph
的用法。用法:
LFR_benchmark_graph(n, tau1, tau2, mu, average_degree=None, min_degree=None, max_degree=None, min_community=None, max_community=None, tol=1e-07, max_iters=500, seed=None)
返回 LFR 基準圖。
該算法進行如下:
找到具有冪律分布和最小值
min_degree
的度數序列,其具有近似平均度數average_degree
。這是通過任一方式完成的指定
min_degree
而不是average_degree
,指定
average_degree
而不是min_degree
,在這種情況下將找到合適的最小度數。
max_degree
也可以指定,否則將設置為n
。每個節點u
將有mu mathrm{deg}(u)
邊將其連接到其自身以外的社區中的節點,並有(1 - mu) mathrm{deg}(u)
邊將其連接到其自己社區中的節點。根據 index
tau2
的冪律分布生成社區大小。如果min_community
和max_community
未指定,它們將分別被選擇為min_degree
和max_degree
。生成社區大小,直到它們的大小之和等於n
。每個節點將被隨機分配一個社區,條件是社區足夠大,可以容納節點的intra-community度,
(1 - mu) mathrm{deg}(u)
,如步驟 2 所述。如果社區變得太大,將選擇一個隨機節點重新分配給一個新的社區,直到所有節點都被分配了一個社區。然後每個節點
u
添加(1 - mu) mathrm{deg}(u)
intra-community 邊和mu mathrm{deg}(u)
inter-community 邊。
- n:int
創建的圖中的節點數。
- tau1:浮點數
創建圖的度數分布的冪律 index 。該值必須嚴格大於一。
- tau2:浮點數
創建圖中社區規模分布的冪律 index 。該值必須嚴格大於一。
- mu:浮點數
入射到每個節點的inter-community 邊的分數。該值必須在區間 [0, 1] 內。
- average_degree:浮點數
創建的圖中節點的所需平均度數。此值必須在區間 [0,
n
] 內。必須指定其中一個和min_degree
,否則會引發NetworkXError
。- min_degree:int
創建的圖中節點的最小度數。此值必須在區間 [0,
n
] 內。必須指定其中一個和average_degree
,否則會引發NetworkXError
。- max_degree:int
創建的圖中節點的最大度數。如果未指定,則設置為
n
,即圖中的節點總數。- min_community:int
圖中社區的最小規模。如果未指定,則設置為
min_degree
。- max_community:int
圖中社區的最大大小。如果未指定,則設置為
n
,即圖中的節點總數。- tol:浮點數
比較浮點數時的容差,特別是比較平均度數值時。
- max_iters:int
嘗試創建社區大小、度分布和社區隸屬關係的最大迭代次數。
- seed:整數、random_state 或無(默認)
隨機數生成狀態的指示符。請參閱隨機性。
- G:NetworkX 圖
根據指定參數生成的 LFR 基準圖。
圖中的每個節點都有一個節點屬性
'community'
,用於存儲包含它的社區(即節點集)。
- NetworkXError
如果任何參數不滿足其上限和下限:
tau1
和tau2
必須嚴格大於 1。mu
必須在 [0, 1] 中。max_degree
必須在 {1, ...,n
} 中。min_community
和max_community
必須在 {0, ...,n
} 中。
如果不完全指定
average_degree
和min_degree
之一。如果未指定
min_degree
並且找不到合適的min_degree
。- ExceededMaxIterations
如果在
max_iters
迭代次數內無法創建有效的度數序列。如果在
max_iters
迭代次數內無法創建一組有效的社區大小。如果在
10 * n * max_iters
迭代次數內無法創建有效的社區分配。
參數:
返回:
拋出:
注意:
該算法與 [1] 中呈現的原始方式略有不同。
我們不是通過配置模型連接圖形然後重新布線以匹配intra-community 和inter-community 度數,而是在最後明確地進行此布線,這應該是等效的。
作者網站 [2] 上發布的代碼使用連續近似計算隨機冪律分布變量及其平均值,而我們在這裏使用離散分布,因為度數和社區大小都是離散的。
盡管作者將該算法說明為非常穩健,但在開發過程中的測試表明,稍微窄一些的參數集可能會成功生成圖形。如果出現例外情況,提供了一些建議。
參考:
- 1
“Benchmark graphs for testing community detection algorithms”, Andrea Lancichinetti, Santo Fortunato, and Filippo Radicchi, Phys. Rev. E 78, 046110 2008
- 2
例子:
基本用法:
>>> from networkx.generators.community import LFR_benchmark_graph >>> n = 250 >>> tau1 = 3 >>> tau2 = 1.5 >>> mu = 0.1 >>> G = LFR_benchmark_graph( ... n, tau1, tau2, mu, average_degree=5, min_community=20, seed=10 ... )
繼續上麵的示例,您可以從圖的節點屬性中獲取社區:
>>> communities = {frozenset(G.nodes[v]["community"]) for v in G}
相關用法
- Python NetworkX LCF_graph用法及代碼示例
- Python NetworkX negative_edge_cycle用法及代碼示例
- Python NetworkX voronoi_cells用法及代碼示例
- Python NetworkX numerical_edge_match用法及代碼示例
- Python NetworkX inverse_line_graph用法及代碼示例
- Python NetworkX write_graph6用法及代碼示例
- Python NetworkX DiGraph.__contains__用法及代碼示例
- Python NetworkX average_degree_connectivity用法及代碼示例
- Python NetworkX eulerian_circuit用法及代碼示例
- Python NetworkX single_source_dijkstra_path_length用法及代碼示例
- Python NetworkX from_dict_of_dicts用法及代碼示例
- Python NetworkX weisfeiler_lehman_subgraph_hashes用法及代碼示例
- Python NetworkX transitive_closure_dag用法及代碼示例
- Python NetworkX intersection用法及代碼示例
- Python NetworkX MultiGraph.size用法及代碼示例
- Python NetworkX Graph.size用法及代碼示例
- Python NetworkX from_scipy_sparse_array用法及代碼示例
- Python NetworkX local_and_global_consistency用法及代碼示例
- Python NetworkX number_of_selfloops用法及代碼示例
- Python NetworkX single_source_bellman_ford用法及代碼示例
- Python NetworkX all_simple_paths用法及代碼示例
- Python NetworkX Graph.to_undirected用法及代碼示例
- Python NetworkX numeric_assortativity_coefficient用法及代碼示例
- Python NetworkX binomial_graph用法及代碼示例
- Python NetworkX dedensify用法及代碼示例
注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.generators.community.LFR_benchmark_graph。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。