cdlib.algorithms.eva

cdlib.algorithms.eva(g_original: object, labels: dict, weight: str = 'weight', resolution: float = 1.0, alpha: float = 0.5) AttrNodeClustering

Eva算法扩展了Louvain方法,以便处理节点的属性(也称为Louvain扩展到顶点属性)。 它通过线性组合优化了两个质量函数,一个是结构性的,另一个是聚类性的,即Newman的模块度和纯度,后者估计为社区内节点携带的最频繁标签的频率的乘积。 参数alpha调节这两个函数的重要性:alpha值高时更倾向于聚类标准而不是结构标准。

支持的图表类型

无向

有向

加权

时间

节点属性

是的

是的

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

  • labels – 字典,为每个节点(键)指定一个字典(值),该字典指定名称属性(键)及其值(值)

  • weight – str, 可选 图中用作权重的键。默认为‘weight’

  • resolution – double, 可选 将改变社区的大小,默认为1。

  • alpha – float, 假设在 [0,1] 之间,可选 将调整模块性和纯度标准的重要性,默认为 0.5

Returns:

AttrNodeClustering 对象

Example:

>>> from cdlib.algorithms import eva
>>> import networkx as nx
>>> import random
>>> l1 = ['A', 'B', 'C', 'D']
>>> l2 = ["E", "F", "G"]
>>> g_attr = nx.barabasi_albert_graph(100, 5)
>>> labels=dict()
>>> for node in g_attr.nodes():
>>>    labels[node]={"l1":random.choice(l1), "l2":random.choice(l2)}
>>> communities = eva(g_attr, labels, alpha=0.8)
References:

Citraro, S., & Rossetti, G. (2019年12月). Eva: 属性感知网络分割. 在国际复杂网络及其应用会议上 (pp. 141-151). Springer, Cham.