CommencezCommencez gratuitement

Recommander des coéditeurs qui n'ont pas encore collaboré

Pour terminer, vous allez mettre à profit le concept des triangles ouverts afin de recommander des utilisateurs GitHub pour collaborer!

Cette activité fait partie du cours

Introduction à l'analyse des réseaux en Python

Voir le cours

Instructions de l’exercice

  • Dressez une liste d'utilisateurs GitHub à qui recommander de collaborer entre eux. Pour ce faire :
    • Dans la première boucle for, itérez sur tous les nœuds de G, métadonnées incluses (en précisant data=True).
    • Dans la deuxième boucle for, parcourez toutes les combinaisons possibles de triangles, qu'on peut obtenir avec la fonction combinations() et une size de 2.
    • Si n1 et n2 n'ont pas d'arête entre eux, il faut recommander une collaboration entre ces deux nœuds (utilisateurs). Dans ce cas, incrémentez la valeur (n1), (n2) du dictionnaire recommended. Vous pouvez vérifier si n1 et n2 ont une arête entre eux à l'aide de la méthode .has_edge().
  • À l'aide d'une compréhension de liste, repérez les 10 meilleures paires d'utilisateurs à qui recommander de collaborer. L'itérable doit être les paires clé-valeur du dictionnaire recommended (accessibles avec la méthode .items()), et la condition doit être satisfaite si count est supérieur aux 10 meilleurs de all_counts. Notez que all_counts est trié par ordre croissant; vous pouvez donc accéder aux 10 premiers avec all_counts[-10].

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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