Doporučování spolueditorů, kteří zatím nespolupracovali
Teď využiješ koncept otevřených trojúhelníků k tomu, aby sis doporučil/a uživatele na GitHubu ke spolupráci!
Toto cvičení je součástí kurzu
Úvod do analýzy sítí v Pythonu
Pokyny k cvičení
- Sestav seznam dvojic uživatelů GitHubu, kterým by měla být doporučena vzájemná spolupráce. Postupuj takto:
- V prvním cyklu
foriteruj přes všechny uzly grafuGvčetně metadat (zadejdata=True). - Ve druhém cyklu
foriteruj přes všechny možné kombinace trojúhelníků – k jejich identifikaci použij funkcicombinations()s hodnotousizenastavenou na2. - Pokud mezi
n1an2neexistuje hrana, spolupráce těchto dvou uzlů (uživatelů) by měla být doporučena – v takovém případě zvyš hodnotu klíče(n1), (n2)ve slovníkurecommended. Existenci hrany mezin1an2ověříš metodou.has_edge().
- V prvním cyklu
- Pomocí list comprehension identifikuj 10 nejlepších dvojic uživatelů vhodných ke spolupráci. Jako iterable použij dvojice klíč–hodnota ze slovníku
recommended(přístupné metodou.items()), přičemž podmínka má být splněna tehdy, když jecountvětší než desátá nejvyšší hodnota vall_counts. Protožeall_countsje seřazeno vzestupně, dostaneš se k top 10 přesall_counts[-10].
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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)