CommencerCommencer gratuitement

Recommander des co-éditeurs qui n’ont pas encore collaboré

Pour finir, vous allez exploiter le concept de triangles ouverts pour recommander des collaborations entre utilisateurs sur GitHub !

Cet exercice fait partie du cours

Introduction à l’analyse de réseaux en Python

Afficher le cours

Instructions

  • Établissez une liste d’utilisateurs GitHub à recommander pour collaborer entre eux. Pour cela :
    • Dans la première boucle for, itérez sur tous les nœuds de G, y compris les métadonnées (en spécifiant data=True).
    • Dans la seconde boucle for, parcourez toutes les combinaisons possibles de triangles, que vous pouvez obtenir avec la fonction combinations() et une size de 2.
    • Si n1 et n2 n’ont pas d’arête entre eux, une collaboration entre ces deux nœuds (utilisateurs) devrait être recommandée ; incrémentez donc la valeur (n1), (n2) du dictionnaire recommended dans ce cas. Vous pouvez vérifier si n1 et n2 ont une arête entre eux avec la méthode .has_edge().
  • À l’aide d’une compréhension de liste, identifiez les 10 paires d’utilisateurs à recommander en priorité. L’itérable doit être les paires clé-valeur du dictionnaire recommended (accessibles avec la méthode .items()), et la condition doit être vraie si count est strictement supérieur au top 10 de all_counts. Notez que all_counts est trié par ordre croissant, vous pouvez donc accéder au top 10 avec all_counts[-10].

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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)
Modifier et exécuter le code