CommencerCommencer gratuitement

Trouver des utilisateurs similaires

Vous allez maintenant vous appuyer sur ce que vous avez appris pour écrire une fonction appelée most_similar_users() qui trouve les utilisateurs les plus similaires à un utilisateur donné.

Les premières lignes de cette fonction ont été préparées pour vous. Une liste de nœuds, user_nodes, a été créée ; elle contient tous les utilisateurs, à l’exception de l’utilisateur fourni en argument à la fonction. Votre tâche est de compléter la fonction afin qu’elle trouve les utilisateurs les plus similaires à cet utilisateur. Vous utiliserez votre fonction user_similarity() de l’exercice précédent pour vous aider.

Un dictionnaire appelé similarities a été configuré, dans lequel les clés sont les scores et les valeurs sont des listes de nœuds. Si vous n’avez jamais vu de defaultdict, ne vous inquiétez pas — vous en apprendrez davantage au chapitre 3 ! Il fonctionne exactement comme un dictionnaire Python classique.

Cet exercice fait partie du cours

Analyse de réseaux intermédiaire en Python

Afficher le cours

Instructions

  • Itérez sur user_nodes et calculez la similarité entre user et chaque user_node (n) à l’aide de votre fonction user_similarity(). Stockez le résultat dans similarity.
  • Ajoutez le score et le nœud au dictionnaire similarities. La clé est le score — similarity — et la valeur est le nœud — n.
  • Calculez le score de similarité maximal. Pour cela, accédez d’abord aux clés (qui contiennent les scores) de similarities à l’aide de la méthode .keys(), puis utilisez la fonction max(). Stockez le résultat dans max_similarity.
  • Retournez la liste des utilisateurs qui partagent la similarité maximale. Cette liste d’utilisateurs correspond à la valeur de la clé max_similarity dans similarities.
  • Utilisez votre fonction most_similar_users() pour afficher la liste des utilisateurs les plus similaires à l’utilisateur 'u4560'.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

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(____)
Modifier et exécuter le code