Aan de slagGa gratis aan de slag

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

Cursus bekijken

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 in G, inclusief de metadata (door data=True op te geven).
    • Itereer in de tweede for-lus over alle mogelijke driehoekscombinaties, te bepalen met de functie combinations() met een size van 2.
    • Als n1 en n2 geen edge tussen zich hebben, moet een samenwerking tussen deze twee knopen (gebruikers) worden aanbevolen. Verhoog in dat geval de waarde (n1), (n2) in de dictionary recommended. Je kunt controleren of n1 en n2 een edge hebben met de methode .has_edge().
  • 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 recommended zijn (toegankelijk met de methode .items()), terwijl de voorwaarde voldaan is als count groter is dan de top 10 in all_counts. Let op: all_counts is oplopend gesorteerd, dus je kunt de top 10 benaderen met all_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)
Code bewerken en uitvoeren