cdlib.evaluation.modularity_density

cdlib.evaluation.modularity_density(graph: Graph, communities: object, lmbd: float = 0.5, **kwargs: dict) object

模块化密度是几种旨在缓解基于模块化度量的分辨率限制问题的提议之一。 该指标的想法是将社区大小的信息纳入社区的预期密度中,以避免忽视小而密集的社区。 对于分区\(S\)中的每个社区\(C\),它使用由\(d(C) = d^{int(C)} − d^{ext(C)}\)计算的平均模块化度,其中\(d^{int(C)}\)\(d^{ext(C)}\)分别是\(C\)的平均内部和外部度,以评估\(C\)在其网络中的适应性。 最后,模块化密度可以如下计算:

\[Q(S) = \sum_{C \in S} \frac{1}{n_C} ( \sum_{i \in C} 2 * \lambda * k^{int}_{iC} - \sum_{i \in C} 2 * (1 - \lambda) * k^{out}_{iC})\]

其中 \(n_C\) 是 C 中的节点数,\(k^{int}_{iC}\) 是节点 i 在 \(C\) 内的度数,\(k^{out}_{iC}\) 是节点 i 在 \(C\) 外的度数,\(\lambda\) 是一个允许调整测量分辨率的参数(其默认值 0.5 计算标准模块化密度分数)。

Parameters:
  • graph – 一个 networkx/igraph 对象

  • communities – NodeClustering 对象

  • lmbd – 分辨率参数,浮点数在 [0,1] 范围内。默认值为 0.5。

Returns:

FitnessResult 对象

示例:

>>> from cdlib.algorithms import louvain
>>> from cdlib import evaluation
>>> g = nx.karate_club_graph()
>>> communities = louvain(g)
>>> mod = evaluation.modularity_density(g,communities)
References:

  1. 张, S., 宁, XM., 丁, C. 等. 通过最大化模块化密度确定蛋白质相互作用网络的模块组织. <https://doi.org/10.1186/1752-0509-4-S2-S10>`_ BMC 系统生物学 4, S10 (2010).