使用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