IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Prepara la nodelist people usando una list comprehension. Se la parola chiave 'bipartite' di un nodo n in G è uguale a 'people', allora quel nodo deve far parte della nodelist.
  • Prepara la nodelist clubs iterando sui nodi di G, includendo i metadati. Qui, nota che devi controllare se la parola chiave 'bipartite' del dizionario dei metadati d è 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 nodelist people, 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 come peopleG e clubsG.
    • Questa funzione accetta due argomenti: il grafo G e la nodelist.

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 = ____
Modifica ed esegui il codice