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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。