我一直在寻找可以使用重叠顶点创建子图的包。根据我的理解, Networkx
可以metis
将图划分为两个或多个部分。但我找不到如何划分为具有重叠节点的子图。
关于支持重叠顶点分区的库的建议将非常有帮助。
编辑:我尝试了angel
CDLIB 中的算法将原始图划分为具有 4 个重叠节点的子图。
import networkx as nx
from cdlib import algorithms
if __name__ == '__main__':
g = nx.karate_club_graph()
coms = algorithms.angel(g, threshold=4, min_community_size=10)
print(coms.method_name)
print(coms.method_parameters) # Clustering parameters)
print(coms.communities)
print(coms.overlap)
print(coms.node_coverage)
输出:
ANGEL
{'threshold': 4, 'min_community_size': 10}
[[14, 15, 18, 20, 22, 23, 27, 29, 30, 31, 32, 8], [1, 12, 13, 17, 19, 2, 21, 3, 7, 8], [14, 15, 18, 2, 20, 22, 30, 31, 33, 8]]
True
0.6470588235294118
从返回的社区中,我了解到 1 和 3 有 4 个节点的重叠,但 2 和 3 或 1 和 3 的重叠大小没有 4 个节点。我不清楚如何在此处指定重叠阈值(4 个重叠)algorithms. angel(g, threshold=4, min_community_size=10)
。我尝试在这里设置 threshold=4 来定义 4 个节点的重叠大小。但是,从可用的文档中angel
:param 阈值:[0,1] 中的合并阈值。
我不确定如何将 4 个重叠转换为必须在边界 [0, 1] 之间设置的值。建议将非常有帮助。