LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

  • Erstelle die people-Knotenliste mit einer List Comprehension. Wenn das Schlüsselwort 'bipartite' eines Knotens n in G gleich '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-Dictionarys d gleich '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 die people-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 als peopleG und clubsG.
    • Diese Funktion nimmt zwei Argumente entgegen: den Graphen G und die Knotenliste.

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 = ____
Code bearbeiten und ausführen