我读了T0.pkl,其中包含用networkx创建的有向图,因此我将其在igraph图中打开了。
接下来,我将Louvain应用于图,现在我有一个louvain.VertexPartition.ModularityVertexPartition,我不知道如何使用它
G0_nx = nx.read_gpickle("../snapshots_original/T0.pkl")
G0_nx_edges = list(G0_nx.edges)
G0_nx_nodes = list(G0_nx.nodes)
G0_ig = igraph.Graph(directed=True)
G0_ig.add_vertices(G0_nx_nodes)
G0_ig.add_edges(G0_nx_edges)
partition = louvain.find_partition(G0_ig, lv.ModularityVertexPartition)
最佳答案
首先,您可以对其进行绘制以可视化集群:
igraph.plot(partition)
如果您尝试用简单的方法打印它
print(partition)
您将获得类似于以下内容的信息:
Clustering with V elements and n clusters
[cluster_id]: node1, node2, node3... (the nodes in the n-th cluster)
例如:
Clustering with 33 elements and 3 clusters
[0] 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
[1] 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21
[2] 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32
之后,您可以访问集群中的节点,就像使用具有所需集群ID的列表作为索引一样:
print(partition[1])
[11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
您还应该检查Louvain库docs,其中概述了其他功能(例如临时社区检测)。
关于python - 使用Louvain在图中查找社区,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58737136/