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
Ö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 iG, inklusive metadata (genom att angedata=True). - I den andra
for-loopen itererar du över alla möjliga triangelkombinationer, vilket kan identifieras med funktionencombinations()och ettsizepå2. - Om
n1ochn2inte 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 ordlistanrecommended. Du kan kontrollera omn1ochn2har en kant mellan sig med metoden.has_edge().
- I den första
- 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 omcountär större än de 10 högsta värdena iall_counts. Observera attall_countsär sorterad i stigande ordning, så du kan komma åt de 10 högsta värdena medall_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)