big*_*ree 4 python cluster-analysis machine-learning
使用python的networkx库,可以从图G中提取k-core.但是有可能提取某个k的所有k核吗?我想做图形聚类,我的想法是为大的k值提取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)]
Run Code Online (Sandbox Code Playgroud)
如果您希望它们作为单独的子图,您可以找到连接的组件:
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)]
Run Code Online (Sandbox Code Playgroud)