Calcolare la proiezione
È il momento di cimentarti nel calcolo della proiezione di un grafo bipartito sui nodi di una delle sue partizioni. Questo ti aiuterà a fare pratica nel passare da una versione bipartita di un grafo alle sue proiezioni unipartite. Ricorda dal video che la "proiezione" di un grafo su una delle sue partizioni rappresenta la connettività dei nodi in quella partizione, condizionata dalle connessioni ai nodi dell'altra partizione. In termini più concreti, puoi pensarla come la "connettività dei clienti in base agli acquisti in comune".
Per aiutarti a iniziare, ecco un suggerimento sulle list comprehension. Le list comprehension possono includere condizioni, quindi se vuoi filtrare un grafo per un certo tipo di nodo, puoi fare: [n for n, d in G.nodes(data=True) if d['key'] == 'some_value'].
Questo esercizio fa parte del corso
Analisi di reti intermedia in Python
Istruzioni dell'esercizio
- Prepara la nodelist
peopleusando una list comprehension. Se la parola chiave'bipartite'di un nodoninGè uguale a'people', allora quel nodo deve far parte della nodelist. - Prepara la nodelist
clubsiterando sui nodi di G, includendo i metadati. Qui, nota che devi controllare se la parola chiave'bipartite'del dizionario dei metadatidè uguale a'clubs'. Nota: Questo è semplicemente un modo alternativo per creare la nodelist. Non devi per forza iterare sui metadati: puoi seguire lo stesso approccio usato per creare la nodelistpeople, verificando invece'clubs'. Ti chiediamo di usare l'altro approccio per farti fare pratica con entrambi. - Usa
nx.bipartite.projected_graph()per calcolare le proiezioni people e clubs. Salva i risultati comepeopleGeclubsG.- Questa funzione accetta due argomenti: il grafo
Ge la nodelist.
- Questa funzione accetta due argomenti: il grafo
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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 = ____