Python 使用networkx提取所有k核

Python 使用networkx提取所有k核,python,machine-learning,cluster-analysis,Python,Machine Learning,Cluster Analysis,使用python的networkx库,可以从图G中提取k核。 但是有可能提取某个k的所有k核吗?我想做图形聚类,我的想法是为k的大值提取k核,并像这样定义聚类。NetworkX中使用的k核定义不需要连接k核 因此,您将在图中获得所有(可能断开连接的)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([

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

NetworkX中使用的k核定义不需要连接k核

因此,您将在图中获得所有(可能断开连接的)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)]