Calcularea proiecției
Acum este momentul să exersezi calcularea proiecției unui graf bipartit pe nodurile uneia dintre partițiile sale. Aceasta este o bună ocazie de a te familiariza cu conversia dintre versiunea bipartită a unui graf și proiecțiile sale unipartite. Reține din videoclip că „proiecția" unui graf pe una dintre partiții reprezintă conectivitatea nodurilor din acea partiție, condiționată de conexiunile cu nodurile din cealaltă partiție. Concret, poți să te gândești la „conectivitatea clienților pe baza achizițiilor comune".
Pentru a te ajuta să începi, iată un indiciu despre listele comprehension. Acestea pot include condiții, astfel că, dacă vrei să filtrezi un graf după un anumit tip de nod, poți face: [n for n, d in G.nodes(data=True) if d['key'] == 'some_value'].
Acest exercițiu face parte din cursul
Analiză intermediară a rețelelor în Python
Instrucțiuni pentru exercițiu
- Pregătește lista de noduri
peoplefolosind o listă comprehension. Dacă valoarea cheii'bipartite'a unui nodndinGeste egală cu'people', atunci acel nod trebuie inclus în listă. - Pregătește lista de noduri
clubsiterând peste nodurile lui G, inclusiv metadatele. Aici trebuie să verifici dacă valoarea cheii'bipartite'din dicționarul de metadatedeste egală cu'clubs'. Notă: Aceasta este pur și simplu o altă modalitate de a crea lista de noduri. Nu trebuie să iterezi peste metadate — poți urma aceeași abordare folosită pentru listapeople, verificând'clubs'în loc de'people'. Îți cerem să folosești această variantă alternativă pentru a exersa ambele metode. - Folosește
nx.bipartite.projected_graph()pentru a calcula proiecțiile pentrupeopleșiclubs. Stochează rezultatele în variabilelepeopleGșiclubsG.- Această funcție primește doi argumenți: graful
Gși lista de noduri.
- Această funcție primește doi argumenți: graful
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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 = ____