Co-editors aanbevelen die nog niet samen hebben bewerkt
Tot slot ga je het concept van open driehoeken gebruiken om GitHub-gebruikers aan te bevelen om samen te werken!
Deze oefening maakt deel uit van de cursus
Introductie tot netwerkanalyse in Python
Oefeninstructies
- Stel een lijst samen van GitHub-gebruikers die je aan elkaar zou moeten aanbevelen om samen te werken. Doe dit als volgt:
- Itereer in de eerste
for-lus over alle knopen inG, inclusief de metadata (doordata=Trueop te geven). - Itereer in de tweede
for-lus over alle mogelijke driehoekscombinaties, te bepalen met de functiecombinations()met eensizevan2. - Als
n1enn2geen edge tussen zich hebben, moet een samenwerking tussen deze twee knopen (gebruikers) worden aanbevolen. Verhoog in dat geval de waarde(n1), (n2)in de dictionaryrecommended. Je kunt controleren ofn1enn2een edge hebben met de methode.has_edge().
- Itereer in de eerste
- Gebruik een list comprehension om de top 10 paren gebruikers te bepalen die je zou moeten aanbevelen om samen te werken. De iterable moet de key-valueparen van de dictionary
recommendedzijn (toegankelijk met de methode.items()), terwijl de voorwaarde voldaan is alscountgroter is dan de top 10 inall_counts. Let op:all_countsis oplopend gesorteerd, dus je kunt de top 10 benaderen metall_counts[-10].
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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)