Začněte nyníZačněte zdarma

Najdi podobné uživatele

Teď navážeš na to, co ses dosud naučil/a, a napíšeš funkci most_similar_users(), která najde uživatele nejpodobnější zadanému uživateli.

Začátek této funkce je už připravený. Byl vytvořen seznam uzlů user_nodes, který obsahuje všechny uživatele kromě uživatele předaného do funkce. Tvým úkolem je funkci dokončit tak, aby našla uživatele nejpodobnější danému uživateli. K tomu využiješ svou funkci user_similarity() z předchozího cvičení.

Byl také připraven slovník similarities, jehož klíče jsou skóre a hodnoty jsou seznamy uzlů. Pokud jsi ještě nepracoval/a s defaultdict, žádný strach – více se o něm dozvíš ve třetí kapitole! Funguje úplně stejně jako běžný slovník v Pythonu.

Toto cvičení je součástí kurzu

Intermediate Network Analysis in Python

Zobrazit kurz

Pokyny k cvičení

  • Projdi user_nodes v cyklu a pro každý uzel n vypočítej podobnost mezi user a tímto uzlem pomocí funkce user_similarity(). Výsledek ulož jako similarity.
  • Přidej skóre a uzel do slovníku similarities. Klíčem je skóre – similarity – a hodnotou je uzel – n.
  • Vypočítej maximální skóre podobnosti. Nejprve přistup ke klíčům slovníku similarities (které obsahují skóre) pomocí metody .keys() a poté použij funkci max(). Výsledek ulož jako max_similarity.
  • Vrať seznam uživatelů s maximální podobností. Tento seznam je hodnotou klíče max_similarity ve slovníku similarities.
  • Pomocí funkce most_similar_users() vypiš seznam uživatelů nejpodobnějších uživateli 'u4560'.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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(____)
Upravit a spustit kód