Beräkna projektion
Nu är det dags att prova på att beräkna projektionen av en bipartit graf till noderna i en av dess partitioner. Det ger dig träning i att konvertera mellan en bipartit version av en graf och dess unipartita projektioner. Kom ihåg från videon att "projektionen" av en graf mot en av dess partitioner är konnektiviteten hos noderna i den partitionen, betingad på kopplingar till noder i den andra partitionen. Mer konkret kan du tänka på det som "kopplingen mellan kunder baserat på delade köp".
Som en hjälp på traven – här är ett tips om liståtergivningar. Liståtergivningar kan innehålla villkor, så om du vill filtrera en graf efter en viss nodtyp kan du skriva: [n for n, d in G.nodes(data=True) if d['key'] == 'some_value'].
Den här övningen är en del av kursen
Nätverksanalys i Python – fortsättningskurs
Övningsinstruktioner
- Förbered nodelistan
peoplemed hjälp av en liståtergivning. Om nyckelordet'bipartite'för en nodniGär lika med'people', ska den noden ingå i nodelistan. - Förbered nodelistan
clubsgenom att iterera över noderna i G inklusive metadata. Observera att du här behöver kontrollera om nyckelordet'bipartite'i metadataordbokendär lika med'clubs'. Obs: Det här är bara ett alternativt sätt att skapa nodelistan. Du behöver inte iterera över metadata – du kan följa samma tillvägagångssätt som du använde för att skapa nodelistanpeople, och helt enkelt kontrollera om värdet är'clubs'i stället. Vi ber dig använda det här alternativa sättet så att du får öva på båda metoderna. - Använd
nx.bipartite.projected_graph()för att beräkna projektionerna för people och clubs. Spara resultaten sompeopleGrespektiveclubsG.- Funktionen tar två argument: grafen
Goch nodelistan.
- Funktionen tar två argument: grafen
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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 = ____