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
Pokyny k cvičení
- Projdi
user_nodesv cyklu a pro každý uzelnvypočítej podobnost meziusera tímto uzlem pomocí funkceuser_similarity(). Výsledek ulož jakosimilarity. - 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 funkcimax(). Výsledek ulož jakomax_similarity. - Vrať seznam uživatelů s maximální podobností. Tento seznam je hodnotou klíče
max_similarityve slovníkusimilarities. - 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(____)