Метрика сходства пользователей
Вы уже написали функцию для вычисления множества общих узлов между двумя вершинами. Теперь напишем функцию, которая рассчитывает метрику сходства между двумя пользователями: количество общих проектов делится на общее число узлов в другом разделе. Эта метрика позволяет находить пользователей, похожих друг на друга.
Это упражнение является частью курса
Средний уровень сетевого анализа на Python
Инструкции к упражнению
- Завершите функцию
user_similarity(), чтобы она вычисляла степень сходства междуuser1иuser2.- Используйте операторы
assert, чтобы проверить, чтоuser1иuser2принадлежат разделу'users'. - Используйте функцию
shared_partition_nodes()из предыдущего упражнения, чтобы получить множество узлов, общих дляuser1иuser2. - Верните долю узлов в разделе
projects: разделите количествоshared_nodesна общее число узлов в разделе'projects'.
- Используйте операторы
- Вычислите показатель сходства между пользователями
'u4560'и'u1880'. Для этого:- Сначала получите узлы раздела
'projects'с помощью функцииget_nodes_from_partition(). - Затем используйте функцию
user_similarity(), чтобы вычислить этот показатель.
- Сначала получите узлы раздела
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
def user_similarity(G, user1, user2, proj_nodes):
# Check that the nodes belong to the 'users' partition
____ G.nodes[____]['bipartite'] == '____'
____ G.nodes[____]['bipartite'] == '____'
# Get the set of nodes shared between the two users
shared_nodes = ____
# Return the fraction of nodes in the projects partition
return len(____) / len(____)
# Compute the similarity score between users 'u4560' and 'u1880'
project_nodes = ____
similarity_score = ____
print(similarity_score)