ПочатиПочніть безкоштовно

Знайдіть схожих користувачів

Тепер ви розвинете те, що вже вивчили, і напишете функцію most_similar_users(), яка знаходить користувачів, найбільш схожих на заданого користувача.

Початок цієї функції вже підготовлено. Створено список вузлів user_nodes, який містить усіх користувачів, окрім заданого користувача, переданого у функцію. Ваше завдання — доповнити функцію так, щоб вона знаходила користувачів, найбільш схожих на цього користувача. Для цього ви скористаєтеся своєю функцією user_similarity() з попередньої вправи.

Підготовлено словник similarities, у якому ключами є бали, а списками значень — вузли. Якщо ви раніше не бачили defaultdict, не хвилюйтеся — більше про нього буде в Розділі 3! Він працює так само, як звичайний словник Python.

Ця вправа є частиною курсу

Середній рівень Network Analysis у Python

Переглянути курс

Інструкції до вправи

  • Ітеруйтеся по user_nodes і обчислюйте схожість між user та кожним user_node (n), використовуючи вашу функцію user_similarity(). Збережіть результат у змінній similarity.
  • Додайте бал і вузол до словника similarities. Ключ — це бал (similarity), а значення — вузол (n).
  • Обчисліть максимальний бал схожості. Для цього спочатку зверніться до ключів (де зберігаються бали) similarities за допомогою методу .keys(), а потім використайте функцію max(). Збережіть результат у змінній max_similarity.
  • Поверніть список користувачів із максимальною схожістю. Це значення за ключем max_similarity у similarities.
  • Використайте вашу функцію most_similar_users(), щоб надрукувати список користувачів, найбільш схожих на користувача 'u4560'.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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(____)
Редагувати та запускати код