Aan de slagBegin gratis

Vergelijkbare gebruikers vinden

Je gaat nu voortbouwen op wat je tot nu toe hebt geleerd en een functie schrijven genaamd most_similar_users() die de gebruikers vindt die het meest lijken op een opgegeven gebruiker.

Het begin van deze functie is alvast voor je geschreven. Er is een lijst met knopen, user_nodes, aangemaakt die alle gebruikers bevat, behalve de opgegeven gebruiker die aan de functie is doorgegeven. Het is jouw taak de functie af te maken zodat deze de gebruikers vindt die het meest lijken op deze opgegeven gebruiker. Daarbij maak je gebruik van je user_similarity()-functie uit de vorige oefening.

Er is een dictionary similarities opgezet, waarin de keys de scores zijn en de waarden lijsten met knopen. Heb je nog nooit een defaultdict gezien? Geen zorgen — in Hoofdstuk 3 leer je er meer over! Hij werkt precies zoals een gewone Python-dictionary.

Deze oefening maakt deel uit van de cursus

Gemiddelde netwerkanalyse in Python

Bekijk cursus

Oefeninstructies

  • Itereer over user_nodes en bereken de gelijkenis tussen user en elke user_node (n) met je functie user_similarity(). Sla het resultaat op als similarity.
  • Voeg de score en knoop toe aan de dictionary similarities. De key is de score — similarity — en de value is de knoop — n.
  • Bereken de maximale gelijkenisscore. Toegang eerst de keys (die de scores bevatten) van similarities met de methode .keys() en gebruik daarna de functie max(). Sla het resultaat op als max_similarity.
  • Retourneer de lijst met gebruikers die de maximale gelijkenis delen. Deze lijst is de value van de key max_similarity in similarities.
  • Gebruik je functie most_similar_users() om de lijst te printen met gebruikers die het meest lijken op de gebruiker 'u4560'.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

from collections import defaultdict

def most_similar_users(G, user, user_nodes, proj_nodes):
    # Data checks
    assert G.nodes[user]['bipartite'] == 'users'

    # Get other nodes from user partition
    user_nodes = set(user_nodes)
    user_nodes.remove(user)

    # Create the dictionary: similarities
    similarities = defaultdict(list)
    for n in ____:
        similarity = ____(____, ____, ____, ____)
        ____[____].____

    # Compute maximum similarity score: max_similarity
    max_similarity = ____

    # Return list of users that share maximal similarity
    return ____[____]

user_nodes = get_nodes_from_partition(G, 'users')
project_nodes = get_nodes_from_partition(G, 'projects')

print(____)
Code bewerken en uitvoeren