Mesure de similarité entre utilisateurs
Après avoir écrit une fonction pour calculer l'ensemble des nœuds partagés entre deux nœuds, vous allez maintenant écrire une fonction qui calcule une mesure de similarité entre deux utilisateurs : le nombre de projets partagés par deux utilisateurs, divisé par le nombre total de nœuds dans l'autre partition. Vous pourrez ensuite l'utiliser pour repérer des utilisateurs similaires.
Cette activité fait partie du cours
Analyse de réseaux intermédiaire en Python
Instructions de l’exercice
- Complétez la fonction
user_similarity()pour calculer la similarité entreuser1etuser2.- Utilisez des instructions
assertpour vérifier queuser1etuser2appartiennent à la partition'users'. - Réutilisez votre fonction
shared_partition_nodes()de l'exercice précédent pour obtenir l'ensemble des nœuds partagés entre les deux utilisateursuser1etuser2. - Retournez la fraction par rapport aux nœuds de la partition
projects. Autrement dit, divisez le nombre deshared_nodespar le nombre total de nœuds dans la partition'projects'.
- Utilisez des instructions
- Calculez le score de similarité entre les utilisateurs
'u4560'et'u1880'. Pour ce faire :- Obtenez d'abord les nœuds de la partition
'projects'à l'aide de votre fonctionget_nodes_from_partition(). - Utilisez ensuite votre fonction
user_similarity()pour calculer le score.
- Obtenez d'abord les nœuds de la partition
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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)