使用networkx提取所有k核心

使用python的networkx库,可以从图G中提取k核心。但是,是否可以提取某个k的所有k核心?我想做图聚类,我的想法是提取K值为k的大值,并定义这样的聚类。使用networkx提取所有k核心

回答:

NetworkX中使用的k-core的定义不需要连接k-core。 http://networkx.lanl.gov/reference/generated/networkx.algorithms.core.k_core.html

因此,您将在图形中获得所有(可能断开连接的)k-核心。

这里是2不相交的3节点完全图的曲线图的一个简单的例子:

In [1]: import networkx as nx 

In [2]: G = nx.Graph([(1,2),(1,3),(2,3)])

In [3]: G.add_edges_from([(10,20),(10,30),(20,30)])

In [4]: nx.k_core(G,k=2).edges()

Out[4]: [(1, 2), (1, 3), (2, 3), (10, 20), (10, 30), (20, 30)]

如果要将它们作为单独的子图就可以找到所连接的部件:

In [5]: graphs = nx.connected_component_subgraphs(nx.k_core(G,k=2)) 

In [6]: for g in graphs:

...: print g.edges()

...:

[(1, 2), (1, 3), (2, 3)]

[(10, 20), (10, 30), (20, 30)]

以上是 使用networkx提取所有k核心 的全部内容, 来源链接: utcz.com/qa/258123.html

回到顶部