НачатьНачать бесплатно

Поиск похожих пользователей

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

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

Также подготовлен словарь similarities, в котором ключами служат оценки схожести, а значениями — списки узлов. Если вы никогда не работали с defaultdict — не беспокойтесь: подробнее вы познакомитесь с ним в главе 3! Он работает точно так же, как обычный словарь Python.

Это упражнение является частью курса

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