Kom igångKom igång gratis

Rekommendera medredaktörer som ännu inte samarbetat

Nu ska du använda konceptet öppna trianglar för att rekommendera GitHub-användare att samarbeta!

Den här övningen är en del av kursen

Introduktion till nätverksanalys i Python

Visa kurs

Övningsinstruktioner

  • Sammanställ en lista över GitHub-användare som bör rekommenderas att samarbeta med varandra. Gör så här:
    • I den första for-loopen itererar du över alla noder i G, inklusive metadata (genom att ange data=True).
    • I den andra for-loopen itererar du över alla möjliga triangelkombinationer, vilket kan identifieras med funktionen combinations() och ett size2.
    • Om n1 och n2 inte har en kant mellan sig bör ett samarbete mellan dessa två noder (användare) rekommenderas – öka då värdet för (n1), (n2) i ordlistan recommended. Du kan kontrollera om n1 och n2 har en kant mellan sig med metoden .has_edge().
  • Använd en listomfattning för att identifiera de 10 användarpar som i första hand bör rekommenderas att samarbeta. Iterabeln ska vara nyckel-värde-paren i ordlistan recommended (som kan nås med metoden .items()), medan villkoret ska vara uppfyllt om count är större än de 10 högsta värdena i all_counts. Observera att all_counts är sorterad i stigande ordning, så du kan komma åt de 10 högsta värdena med all_counts[-10].

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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)
Redigera och kör kod