LoslegenKostenlos loslegen

Co-Editoren empfehlen, die noch nicht zusammen editiert haben

Zum Abschluss nutzt du das Konzept offener Dreiecke, um GitHub-Nutzern Zusammenarbeit zu empfehlen!

Diese Übung ist Teil des Kurses

Einstieg in die Netzwerkanalyse mit Python

Kurs anzeigen

Anleitung zur Übung

  • Stelle eine Liste von GitHub-Nutzern zusammen, die zur Zusammenarbeit miteinander empfohlen werden sollten. Gehe dazu so vor:
    • Iteriere im ersten for-Loop über alle Knoten in G, inklusive der Metadaten (durch Angabe von data=True).
    • Iteriere im zweiten for-Loop über alle möglichen Dreiecks-Kombinationen. Diese kannst du mit der Funktion combinations() und einer size von 2 ermitteln.
    • Falls n1 und n2 keine Kante zwischen sich haben, sollte eine Zusammenarbeit zwischen diesen beiden Knoten (Nutzern) empfohlen werden. Erhöhe in diesem Fall den Wert (n1), (n2) im Dictionary recommended. Ob n1 und n2 eine Kante zwischen sich haben, kannst du mit der Methode .has_edge() prüfen.
  • Ermittle mit einer Listenkomprehension die Top 10 Nutzerpaare, denen eine Zusammenarbeit empfohlen werden sollte. Das iterable sollen die Schlüssel-Wert-Paare des Dictionaries recommended sein (zugänglich über die Methode .items()), während die Bedingung erfüllt ist, wenn count größer ist als die Top 10 in all_counts. Beachte, dass all_counts aufsteigend sortiert ist, sodass du die Top 10 mit all_counts[-10] erhältst.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# Import necessary modules
from itertools import combinations
from collections import defaultdict

# Initialize the defaultdict: recommended
recommended = defaultdict(int)

# Iterate over all the nodes in G
for n, d in ____:

    # Iterate over all possible triangle relationship combinations
    for n1, n2 in ____(list(G.neighbors(n)), ____):

        # Check whether n1 and n2 do not have an edge
        if not G.has_edge(____, ____):

            # Increment recommended
            ____[(____, ____)] += 1

# Identify the top 10 pairs of users
all_counts = sorted(recommended.values())
top10_pairs = [pair for pair, count in ____ if ____ > ____]
print(top10_pairs)
Code bearbeiten und ausführen