ÎncepețiÎncepe gratuit

Recomandarea co-editorilor care nu au colaborat încă

În cele din urmă, vei folosi conceptul de triunghiuri deschise pentru a recomanda utilizatorilor GitHub cu cine să colaboreze!

Acest exercițiu face parte din cursul

Introducere în analiza rețelelor în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Alcătuiește o listă de utilizatori GitHub cărora ar trebui să li se recomande să colaboreze între ei. Pentru aceasta:
    • În primul for, iterează peste toate nodurile din G, inclusiv metadatele (specificând data=True).
    • În al doilea for, iterează peste toate combinațiile posibile de triunghiuri, care pot fi identificate folosind funcția combinations() cu un size de 2.
    • Dacă n1 și n2 nu au o muchie între ele, o colaborare între aceste două noduri (utilizatori) ar trebui recomandată, deci incrementează valoarea cheii (n1), (n2) din dicționarul recommended. Poți verifica dacă n1 și n2 au sau nu o muchie între ele folosind metoda .has_edge().
  • Folosind un list comprehension, identifică primele 10 perechi de utilizatori cărora ar trebui să li se recomande colaborarea. Iterabilul ar trebui să fie perechile cheie-valoare din dicționarul recommended (accesibile cu metoda .items()), iar condiția trebuie să fie îndeplinită dacă count este mai mare decât al 10-lea cel mai mare element din all_counts. Reține că all_counts este sortat în ordine crescătoare, deci poți accesa primele 10 cu all_counts[-10].

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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)
Editează și rulează codul