시작하기무료로 시작하기

편집 커뮤니티 특성 파악하기

이제까지 배운 BFS 알고리즘과 최대 클리크 개념을 결합해 Arc plot으로 네트워크를 시각화해 보세요.

Github 사용자 협업 네트워크에서 가장 큰 최대 클리크는 부분 그래프 G_lmc에 할당되어 있어요. NetworkX 2.x 이상 버전에서는 G.subgraph(nodelist)가 원본 그래프에 대한 변경 불가능한 뷰만 반환한다는 점에 유의하세요. 변경 가능한 버전을 얻으려면 그래프의 .copy()를 명시적으로 호출해야 합니다.

이 연습은 강의의 일부입니다

Python으로 시작하는 네트워크 분석

강의 보기

연습 안내

  • 클리크에서 1단계 떨어진 사용자들을 포함하도록 확장하고, 그 사용자들을 부분 그래프에 추가하세요. 첫 번째 for 루프 안에서:
    • .add_nodes_from().neighbors() 메서드를 사용하여 G의 이웃에서 노드를 가져와 G_lmc에 추가하세요.
    • .add_edges_from() 메서드를 사용해 현재 노드와 그 이웃들 사이의 간선을 G_lmc에 추가하세요. 이를 위해 zip() 함수를 사용해 현재 노드와 각 이웃으로 이루어진 튜플 목록을 만들어야 합니다. zip()의 첫 번째 인자는 [node]*len(list(G.neighbors(node)))가 되고, 두 번째 인자는 해당 node의 이웃입니다.
  • 각 노드의 차수 중심성 점수를 노드 메타데이터에 기록하세요.
    • 두 번째 for 루프에서 nx.degree_centrality(G_lmc)[n]G_lmc.nodes[n]['degree centrality']에 할당하면 됩니다.
  • 노드들을 차수 중심성으로 정렬해 Arc plot으로 이 네트워크를 시각화하세요(키워드 인자 sort_by='degree centrality'를 사용하면 됩니다).

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Import necessary modules
from nxviz import arc
import matplotlib.pyplot as plt

# Identify the largest maximal clique: largest_max_clique
largest_max_clique = set(sorted(nx.find_cliques(G), key=lambda x: len(x))[-1])

# Create a subgraph from the largest_max_clique: G_lmc
G_lmc = G.subgraph(largest_max_clique).copy()

# Go out 1 degree of separation
for node in list(G_lmc.nodes()):
    G_lmc.add_nodes_from(____)
    G_lmc.add_edges_from(zip(____, ____))

# Record each node's degree centrality score
for n in G_lmc.nodes():
    ____ = ____

# Create the Arc plot: a
a = ____

# Draw the Arc plot to the screen
a
plt.show()
코드 편집 및 실행