Metrica di similarità tra utenti
Dopo aver scritto una funzione per calcolare l’insieme dei nodi condivisi tra due nodi, ora scriverai una funzione per calcolare una metrica di similarità tra due utenti: il numero di progetti condivisi tra due utenti diviso per il numero totale di nodi nell’altra partizione. Questo può poi essere usato per trovare utenti simili tra loro.
Questo esercizio fa parte del corso
Analisi di reti intermedia in Python
Istruzioni dell'esercizio
- Completa la funzione
user_similarity()per calcolare la similarità trauser1euser2.- Usa istruzioni
assertper verificare cheuser1euser2appartengano alla partizione'users'. - Usa la tua funzione
shared_partition_nodes()dell’esercizio precedente per ottenere l’insieme dei nodi condivisi tra i due utentiuser1euser2. - Restituisci la frazione rispetto ai nodi nella partizione
projects. Cioè, dividi il numero dishared_nodesper il numero totale di nodi nella partizione'projects'.
- Usa istruzioni
- Calcola lo score di similarità tra gli utenti
'u4560'e'u1880'. Per farlo:- Per prima cosa ottieni i nodi nella partizione
'projects'usando la tua funzioneget_nodes_from_partition(). - Poi usa la tua funzione
user_similarity()per calcolare lo score.
- Per prima cosa ottieni i nodi nella partizione
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
def user_similarity(G, user1, user2, proj_nodes):
# Check that the nodes belong to the 'users' partition
____ G.nodes[____]['bipartite'] == '____'
____ G.nodes[____]['bipartite'] == '____'
# Get the set of nodes shared between the two users
shared_nodes = ____
# Return the fraction of nodes in the projects partition
return len(____) / len(____)
# Compute the similarity score between users 'u4560' and 'u1880'
project_nodes = ____
similarity_score = ____
print(similarity_score)