Projektion berechnen
Jetzt bist du dran: Berechne die Projektion eines bipartiten Graphen auf die Knoten einer seiner Partitionen. So übst du das Umschalten zwischen einem bipartiten Graphen und seinen unipartiten Projektionen. Erinnere dich aus dem Video: Die „Projektion“ eines Graphen auf eine seiner Partitionen ist die Konnektivität der Knoten in dieser Partition, bedingt durch Verbindungen zu Knoten der anderen Partition. Konkreter kannst du dir das als „Vernetzung von Kundinnen und Kunden basierend auf gemeinsamen Käufen“ vorstellen.
Zum Einstieg ein Hinweis zu List Comprehensions: List Comprehensions können Bedingungen enthalten. Wenn du also einen Graphen auf einen bestimmten Knotentyp filtern möchtest, kannst du das so tun: [n for n, d in G.nodes(data=True) if d['key'] == 'some_value'].
Diese Übung ist Teil des Kurses
Fortgeschrittene Netzwerkanalyse in Python
Anleitung zur Übung
- Erstelle die
people-Knotenliste mit einer List Comprehension. Wenn das Schlüsselwort'bipartite'eines KnotensninGgleich'people'ist, soll dieser Knoten Teil der Knotenliste sein. - Erstelle die
clubs-Knotenliste, indem du über die Knoten von G einschließlich ihrer Metadaten iterierst. Beachte hier: Du musst prüfen, ob das'bipartite'-Schlüsselwort des Metadaten-Dictionarysdgleich'clubs'ist. Hinweis: Das ist einfach eine alternative Methode, die Knotenliste zu erstellen. Du musst nicht über die Metadaten iterieren – du kannst denselben Ansatz wie für diepeople-Knotenliste verwenden und stattdessen auf'clubs'prüfen. Wir bitten dich hier um den anderen Ansatz, damit du beide übst. - Verwende
nx.bipartite.projected_graph(), um die Projektionen für people und clubs zu berechnen. Speichere die Ergebnisse alspeopleGundclubsG.- Diese Funktion nimmt zwei Argumente entgegen: den Graphen
Gund die Knotenliste.
- Diese Funktion nimmt zwei Argumente entgegen: den Graphen
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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 = ____