사용자 노드의 차수 중심성 분포
이번 연습 문제와 다음 연습 문제에서는 이전 강의에서 다룬 내용을 마지막으로 복습해 보겠습니다. 과제는 GitHub 협업 네트워크의 이분 그래프 버전에서 각 노드 파티션의 차수 중심성 분포를 그리는 것입니다. 여기서는 'users' 파티션에 대해 진행하고, 다음 연습 문제에서는 'projects' 파티션을 다룹니다.
이전에 작성한 함수 get_nodes_from_partition()가 미리 로드되어 있어요. 다시 상기하면, "차수 중심성(degree centrality)"은 노드의 중요도를 나타내는 지표이며, "차수 중심성 분포"는 그래프의 모든 노드에 대한 차수 중심성 점수 목록을 의미해요. 몇 개의 연습 문제 전, 서코스(circos) 플롯을 만들 때는 저희가 차수 중심성을 계산해 드렸습니다. 이제는 직접 계산해 보세요!
이 연습은 강의의 일부입니다
Python 중급 네트워크 분석
연습 안내
matplotlib.pyplot을plt로 임포트하세요.- 이전 연습 문제에서 만든
get_nodes_from_partition()함수를 사용해,G의'users'노드에 해당하는 목록을user_nodes라는 이름으로 가져오세요. nx.degree_centrality()함수를 사용해G의 각 노드에 대한 차수 중심성을 계산하고, 결과를dcs에 저장하세요.- 리스트 컴프리헨션을 사용해
user_nodes각 노드의 차수 중심성을 계산하고, 결과를user_dcs에 저장하세요.- 참고로
dcs는 키가 노드인 딕셔너리예요. 여기서 필요한 노드는user_nodes에 담겨 있어요. 이 정보를 활용해 사용자 노드의 차수 중심성을 어떻게 얻을 수 있을까요? 반복 변수로는n을 사용하세요.
- 참고로
plt.hist()와user_dcs를 사용해 사용자 차수 분포의 히스토그램을 그리세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Import matplotlib
____
# Get the 'users' nodes: user_nodes
user_nodes = ____
# Compute the degree centralities: dcs
dcs = ____
# Get the degree centralities for user_nodes: user_dcs
user_dcs = [dcs[____] for n in ____]
# Plot the degree distribution of users_dcs
plt.yscale('log')
plt.hist(____, bins=20)
plt.show()