Kom igångKom igång gratis

Hitta liknande användare

Nu ska du bygga vidare på det du lärt dig och skriva en funktion kallad most_similar_users(), som hittar de användare som liknar en given användare mest.

Början av den här funktionen är redan skriven åt dig. En lista med noder, user_nodes, har skapats – den innehåller alla användare utom den angivna användaren som skickats in i funktionen. Din uppgift är att slutföra funktionen så att den hittar de användare som liknar den givna användaren mest. Du kommer att använda din user_similarity()-funktion från föregående övning som hjälp.

En ordbok kallad similarities har skapats, där nycklarna är poängen och listan med värden är noderna. Om du aldrig sett en defaultdict tidigare är det lugnt – du lär dig mer om den i kapitel 3! Den fungerar precis som en vanlig Python-ordbok.

Den här övningen är en del av kursen

Nätverksanalys i Python – fortsättningskurs

Visa kurs

Övningsinstruktioner

  • Iterera över user_nodes och beräkna likheten mellan user och varje user_node (n) med hjälp av din user_similarity()-funktion. Spara resultatet som similarity.
  • Lägg till poängen och noden i ordboken similarities. Nyckeln är poängen – similarity – och värdet är noden – n.
  • Beräkna det högsta likhetsvärdet. Hämta först nycklarna (som innehåller poängen) i similarities med metoden .keys() och använd sedan funktionen max(). Spara resultatet som max_similarity.
  • Returnera listan med användare som delar den högsta likheten. Den listan är värdet för nyckeln max_similarity i similarities.
  • Använd din most_similar_users()-funktion för att skriva ut listan med användare som liknar användaren 'u4560' mest.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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(____)
Redigera och kör kod