ÎncepețiÎncepe gratuit

Găsește utilizatori similari

Acum vei construi pe baza a ceea ce ai învățat până acum și vei scrie o funcție numită most_similar_users(), care găsește utilizatorii cei mai similari cu un utilizator dat.

Începutul acestei funcții a fost deja scris pentru tine. A fost creată o listă de noduri, user_nodes, care conține toți utilizatorii cu excepția utilizatorului transmis ca argument funcției. Sarcina ta este să completezi funcția astfel încât să găsească utilizatorii cei mai similari cu acest utilizator dat. Vei folosi funcția user_similarity() din exercițiul anterior pentru a realiza acest lucru.

A fost configurat un dicționar numit similarities, în care cheile sunt scorurile, iar valorile sunt liste de noduri. Dacă nu ai mai întâlnit un defaultdict până acum, nu îți face griji – vei afla mai multe despre el în Capitolul 3! Funcționează exact ca un dicționar Python obișnuit.

Acest exercițiu face parte din cursul

Analiză intermediară a rețelelor în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Iterează peste user_nodes și calculează similaritatea dintre user și fiecare user_node (n) folosind funcția user_similarity(). Stochează rezultatul ca similarity.
  • Adaugă scorul și nodul în dicționarul similarities. Cheia este scorul – similarity – iar valoarea este nodul – n.
  • Calculează scorul maxim de similaritate. Pentru aceasta, accesează mai întâi cheile (care conțin scorurile) din similarities folosind metoda .keys(), apoi aplică funcția max(). Stochează rezultatul ca max_similarity.
  • Returnează lista utilizatorilor care au similaritate maximă. Această listă reprezintă valoarea cheii max_similarity din similarities.
  • Folosește funcția most_similar_users() pentru a afișa lista utilizatorilor cei mai similari cu utilizatorul 'u4560'.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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(____)
Editează și rulează codul