转换为网络图

2024-03-29 15:30:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python代码,它使用igraph

import igraph
edge =  [(0, 6), (0, 8), (0, 115), (0, 124), (0, 289), (0, 359), (0, 363), (6, 60), (6, 115), (6, 128), (6, 129), (6, 130), (6, 131), (6, 359), (6, 529), (8, 9), (8, 17), (8, 115)]
G = igraph.Graph(edges=edge, directed=False)
G.vs['label'] = nodes
G.es["weight"] = weights
dendrogram = G.community_edge_betweenness()
clusters = dendrogram.as_clustering()
membership = clusters.membership
out = pd.Series(membership, index=nodes)

我需要把它转换成networkx库。在

^{pr2}$

但是,dendrogram不能聚集在networkx库中。有人能帮忙把igraph代码复制到networkx集群吗?在


Tags: 代码importnetworkxfalselabelgraphmembershipvs
1条回答
网友
1楼 · 发布于 2024-03-29 15:30:33

问题是,在网络科学中,“聚类”指的是两种不同的东西。它要么是指聚类系数(ego图中三角形的分数;nx.clustering),要么是指一组节点(又称数据聚类、网络社区、节点划分等)。在

在本例中,您使用igraph community_edge_betweenness()对节点进行分层聚类,然后剪切树状图,通过dendrogram.as_clustering()创建一个节点分区。在

networkx中的等效方法是使用girvan_newman

from networkx.algorithms.community.centrality import girvan_newman

nx_dendrogram = girvan_newman(G)
move_down_dendrogram = itertools.takewhile(lambda c: len(c) <= 4, nx_dendrogram)
for c in move_down_dendrogram:
    clustering_list = c
print(clustering_list)

membership = [0] * G.number_of_nodes()
for ic, cset in enumerate(clustering_list):
    for n in cset:
        membership[n] = ic
out = pd.Series(membership, index=nodes)

相关问题 更多 >