Общие узлы в другом разделе
Чтобы освоить концепцию рекомендательных систем, начнём с основ. В этом упражнении мы сосредоточимся на вычислении схожести пользователей в двудольных графах.
Ваша задача — написать функцию, которая принимает два узла и возвращает множество узлов-репозиториев, общих для обоих пользовательских узлов.
В этом упражнении вам пригодятся следующие методы и функции: .neighbors(), set() и .intersection() — а также, конечно, функция shared_partition_nodes, которую вы напишете сами!
Это упражнение является частью курса
Средний уровень сетевого анализа на Python
Инструкции к упражнению
- Напишите функцию
shared_partition_nodes(), которая принимает 3 аргумента — графG,node1иnode2— и возвращает множество узлов, общих дляnode1иnode2.- Проверьте, что
node1иnode2принадлежат одному и тому же разделу, используя оператор assert и ключ'bipartite'. - Получите соседей
node1и сохраните их в переменнуюnbrs1. - Получите соседей
node2и сохраните их в переменнуюnbrs2.
- Проверьте, что
- Вычислите пересечение
nbrs1иnbrs2с помощью метода.intersection()для множества. - Выведите количество общих репозиториев пользователей
'u7909'и'u2148', используя функциюshared_partition_nodes()совместно с функциейlen().
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
def ____:
# Check that the nodes belong to the same partition
assert G.nodes[____]['bipartite'] == G.nodes[____]['bipartite']
# Get neighbors of node 1: nbrs1
nbrs1 = ____
# Get neighbors of node 2: nbrs2
nbrs2 = ____
# Compute the overlap using set intersections
overlap = ____(____).____(____)
return overlap
# Print the number of shared repositories between users 'u7909' and 'u2148'
print(____(____))