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

Вычисление проекции

Пришло время попрактиковаться в вычислении проекции двудольного графа на узлы одной из его долей. Это поможет вам освоить преобразование двудольного графа в его унидольные проекции. Вспомните из видео: «проекция» графа на одну из его долей — это связность узлов этой доли, обусловленная их связями с узлами другой доли. Для наглядности можно представить это как «связность покупателей на основе общих покупок».

В качестве подсказки напомним, как работают генераторы списков с условиями. Если нужно отфильтровать узлы графа по определённому типу, можно использовать такую конструкцию: [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 = ____
Редактировать и запускать код