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
Oefeninstructies
- Maak de
people-nodelist met een list comprehension. Als het'bipartite'-kenmerk van een knoopninGgelijk 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 metadatadictdgelijk 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 depeople-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 alspeopleGenclubsG.- Deze functie neemt twee argumenten: de graaf
Gen de nodelist.
- Deze functie neemt twee argumenten: de graaf
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 = ____