Aan de slagBegin gratis

Projectie berekenen

Tijd om zelf de projectie van een bipartiete graaf te berekenen naar de knopen van een van de partities. Zo oefen je met het omzetten tussen een bipartiete versie van een graaf en de unipartiete projecties. Denk terug aan de video: de "projectie" van een graaf op een van de partities is de connectiviteit van de knopen in die partitie, voorwaardelijk op verbindingen met knopen in de andere partitie. Concreter kun je denken aan de "connectiviteit van klanten op basis van gedeelde aankopen".

Om je op weg te helpen, hier een hint over list comprehensions. List comprehensions kunnen voorwaarden bevatten. Als je een graaf wilt filteren op een bepaald type knoop, kun je dit doen: [n for n, d in G.nodes(data=True) if d['key'] == 'some_value'].

Deze oefening maakt deel uit van de cursus

Gemiddelde netwerkanalyse in Python

Bekijk cursus

Oefeninstructies

  • Maak de people-nodelist met een list comprehension. Als het 'bipartite'-kenmerk van een knoop n in G gelijk is aan 'people', dan moet die knoop in de nodelist komen.
  • Maak de clubs-nodelist door over de knopen van G te itereren, inclusief de metadata. Let er hier op dat je moet controleren of het 'bipartite'-kenmerk van de metadatadict d gelijk is aan 'clubs'. Opmerking: dit is gewoon een alternatieve manier om de nodelist te maken. Je hoeft niet per se over de metadata te itereren – je kunt dezelfde aanpak gebruiken als bij de people-nodelist en simpelweg op 'clubs' controleren. We vragen je hier de andere aanpak te gebruiken zodat je beide oefent.
  • Gebruik nx.bipartite.projected_graph() om de projecties voor people en clubs te berekenen. Sla de resultaten op als peopleG en clubsG.
    • Deze functie neemt twee argumenten: de graaf G en de nodelist.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# 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 = ____
Code bewerken en uitvoeren