ComenzarEmpieza gratis

Busca usuarios similares

Ahora vas a construir sobre lo que has aprendido para escribir una función llamada most_similar_users() que encuentre los usuarios más similares a otro usuario dado.

Ya tienes el inicio de esta función. Se ha creado una lista de nodos, user_nodes, que contiene a todos los usuarios excepto el usuario proporcionado que se pasa a la función. Tu tarea es completar la función para que encuentre los usuarios más similares a ese usuario dado. Para ello, usarás tu función user_similarity() del ejercicio anterior.

Se ha configurado un diccionario llamado similarities, en el que las claves son las puntuaciones y la lista de valores son los nodos. Si no has visto nunca un defaultdict, no te preocupes: aprenderás más sobre ello en el Capítulo 3. Funciona exactamente igual que un diccionario normal de Python.

Este ejercicio forma parte del curso

Análisis de redes intermedio en Python

Ver curso

Instrucciones del ejercicio

  • Itera sobre user_nodes y calcula la similitud entre user y cada user_node (n) usando tu función user_similarity(). Guarda el resultado como similarity.
  • Añade la puntuación y el nodo al diccionario similarities. La clave es la puntuación (similarity) y el valor es el nodo (n).
  • Calcula la puntuación máxima de similitud. Para ello, primero accede a las claves (que contienen las puntuaciones) de similarities usando el método .keys() y luego utiliza la función max(). Guarda el resultado como max_similarity.
  • Devuelve la lista de usuarios que comparten la similitud máxima. Esta lista de usuarios es el valor de la clave max_similarity de similarities.
  • Usa tu función most_similar_users() para imprimir la lista de usuarios más similares al usuario 'u4560'.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

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(____)
Editar y ejecutar código