프로젝션 계산하기
이제 이분 그래프의 한 파티션에 있는 노드로 프로젝션을 계산해 볼 차례예요. 이는 이분 그래프와 그 단일 그래프(unipartite) 프로젝션 간 변환에 익숙해지는 데 도움이 됩니다. 영상에서 봤듯이, 그래프를 한 파티션으로 "프로젝션" 한다는 것은 다른 파티션의 노드들과의 연결을 바탕으로 해당 파티션 노드들의 연결성을 보는 것입니다. 더 구체적으로는 "공동 구매에 기반한 고객 간 연결성"처럼 생각하시면 됩니다.
시작을 돕기 위해 리스트 컴프리헨션에 대한 힌트를 드릴게요. 리스트 컴프리헨션에는 조건을 포함할 수 있으므로, 그래프에서 특정 유형의 노드만 걸러내고 싶다면 다음과 같이 할 수 있습니다: [n for n, d in G.nodes(data=True) if d['key'] == 'some_value'].
이 연습은 강의의 일부입니다
Python 중급 네트워크 분석
연습 안내
- 리스트 컴프리헨션을 사용해
people노드 리스트를 준비하세요.G의 노드n에서'bipartite'키워드가'people'과 같다면 해당 노드는 노드 리스트에 포함되어야 합니다. - 메타데이터를 포함하여 G의 노드를 순회하면서
clubs노드 리스트를 준비하세요. 여기서는 메타데이터 딕셔너리d의'bipartite'키워드가'clubs'인지 확인해야 합니다. 참고: 이는 노드 리스트를 만드는 또 다른 방법일 뿐입니다. 메타데이터를 순회하지 않고도,people노드 리스트를 만들 때와 동일한 방식으로'clubs'를 확인해도 됩니다. 이 문제에서는 두 가지 방법 모두 연습해 보시도록 다른 방식을 사용하도록 요청드립니다. nx.bipartite.projected_graph()를 사용해 people 프로젝션과 clubs 프로젝션을 계산하세요. 결과는 각각peopleG와clubsG에 저장하세요.- 이 함수는 두 개의 인자를 받습니다: 그래프
G와 노드 리스트.
- 이 함수는 두 개의 인자를 받습니다: 그래프
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Prepare the nodelists needed for computing projections: people, clubs
# This exercise shows you two ways to do it, one with `data=True` and one without.
people = [n for n in G.nodes() if G.nodes[____]['____'] == '____']
clubs = [n for n, d in G.nodes(data=True) if d['____'] == '____']
# Compute the people and clubs projections: peopleG, clubsG
peopleG = ____
clubsG = ____