cdlib.algorithms.pycombo

cdlib.algorithms.pycombo(g_original: object, weight: str = 'weight', max_communities: int | None = None, modularity_resolution: float = 1.0, num_split_attempts: int = 0, start_separate: bool = False, treat_as_modularity: bool = False, random_seed: int = 42) NodeClustering

这是社区检测算法“Combo”的实现(用于模块化最大化)。

支持的图表类型

无向

有向

加权

是的

是的

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

  • weight – 可选,默认为weight。用作权重的图边属性。如果为None,则假定图是无权重的。如果图以字符串形式传递(文件路径),或者该属性不存在,则忽略此参数。

  • max_communities – 可选,默认为 None。最大社区数。如果 <= 0 或 None,则假定为无限。

  • modularity_resolution – float, 默认为1.0。模块化分辨率参数。

  • num_split_attempts – int, 默认为 0。分割尝试的次数。如果为 0,则自动调整此数字。

  • start_separate – bool, 默认值为 False。表示 Combo 是否应从将每个节点分配到其自己的独立社区开始。这可能有助于实现更高的模块性,但会使执行速度大大减慢。

  • treat_as_modularity – bool, 默认值为 False。表示是否应将边权重视为模块性分数。如果为 True,算法将解决给定图上的团划分问题,将其视为模块性图(矩阵)。例如,这允许用户提供他们自己的自定义“模块性”矩阵。在这种情况下,modularity_resolution 将被忽略。

  • random_seed – int, 默认为42。使用的随机种子。

Returns:

节点聚类对象

Example:

>>> from cdlib import algorithms
>>> import networkx as nx
>>> G = nx.karate_club_graph()
>>> coms = algorithms.pycombo(G)
References:

Sobolevsky, S., Campari, R., Belyi, A. 和 Ratti, C., 2014. 复杂网络中高质量社区检测的通用优化技术。物理评论 E, 90(1), p.012811.

注意

参考实现:https://github.com/Casyfill/pyCombo