2
파이썬의 networkx 라이브러리를 사용하면 그래프 G에서 k- 코어를 추출 할 수 있습니다. 그러나 특정 k에 대해 모든 k- 코어를 추출 할 수 있습니까? 그래프 클러스터링을하고 싶습니다. 제 아이디어는 큰 k 값에 대해 k 코어를 추출하고 이와 같은 클러스터를 정의하는 것입니다.networkx를 사용하여 모든 k- 코어 추출하기
파이썬의 networkx 라이브러리를 사용하면 그래프 G에서 k- 코어를 추출 할 수 있습니다. 그러나 특정 k에 대해 모든 k- 코어를 추출 할 수 있습니까? 그래프 클러스터링을하고 싶습니다. 제 아이디어는 큰 k 값에 대해 k 코어를 추출하고 이와 같은 클러스터를 정의하는 것입니다.networkx를 사용하여 모든 k- 코어 추출하기
NetworkX에서 사용되는 k 코어의 정의에는 k 코어가 연결될 필요가 없습니다. http://networkx.lanl.gov/reference/generated/networkx.algorithms.core.k_core.html
그래야 그래프에서 (아마도 연결이 끊어진) k 코어를 모두 얻을 수 있습니다. 연결된 구성 요소
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)]
다음
2 분리 된 3 노드 전체 그래프의 그래프의 간단한 예입니다