Вычисление проекции
Пришло время попрактиковаться в вычислении проекции двудольного графа на узлы одной из его долей. Это поможет вам освоить преобразование двудольного графа в его унидольные проекции. Вспомните из видео: «проекция» графа на одну из его долей — это связность узлов этой доли, обусловленная их связями с узлами другой доли. Для наглядности можно представить это как «связность покупателей на основе общих покупок».
В качестве подсказки напомним, как работают генераторы списков с условиями. Если нужно отфильтровать узлы графа по определённому типу, можно использовать такую конструкцию: [n for n, d in G.nodes(data=True) if d['key'] == 'some_value'].
Это упражнение является частью курса
Средний уровень сетевого анализа на Python
Инструкции к упражнению
- Подготовьте список узлов
peopleс помощью генератора списков. Если значение ключа'bipartite'узлаnв графеGравно'people', этот узел должен войти в список. - Подготовьте список узлов
clubs, перебирая узлы графа G вместе с метаданными. Здесь нужно проверить, равно ли значение ключа'bipartite'в словаре метаданныхdзначению'clubs'. Обратите внимание: это просто альтернативный способ создания списка узлов. Перебирать метаданные не обязательно — можно использовать тот же подход, что и при создании спискаpeople, проверяя'clubs'вместо'people'. Мы предлагаем попробовать оба способа, чтобы вы получили практику с каждым из них. - С помощью
nx.bipartite.projected_graph()вычислите проекции для людей и клубов. Сохраните результаты в переменныеpeopleGиclubsG.- Функция принимает два аргумента: граф
Gи список узлов.
- Функция принимает два аргумента: граф
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Prepare the nodelists needed for computing projections: people, clubs
# This exercise shows you two ways to do it, one with `data=True` and one without.
people = [n for n in G.nodes() if G.nodes[____]['____'] == '____']
clubs = [n for n, d in G.nodes(data=True) if d['____'] == '____']
# Compute the people and clubs projections: peopleG, clubsG
peopleG = ____
clubsG = ____