ComeçarComece de graça

Calculando a projeção

Chegou a hora de praticar o cálculo da projeção de um grafo bipartido para os nós de uma de suas partições. Isso vai ajudar você a ganhar prática ao converter entre a versão bipartida de um grafo e suas projeções unipartidas. Lembre-se do vídeo: a “projeção” de um grafo sobre uma de suas partições é a conectividade dos nós nessa partição condicionada às conexões com nós da outra partição. De forma mais concreta, você pode pensar na “conectividade de clientes com base em compras em comum”.

Para começar, aqui vai uma dica sobre list comprehensions. List comprehensions podem incluir condições; então, se você quiser filtrar um grafo por um certo tipo de nó, pode fazer: [n for n, d in G.nodes(data=True) if d['key'] == 'some_value'].

Este exercício faz parte do curso

Análise de Redes Intermediária em Python

Ver curso

Instruções do exercício

  • Prepare a nodelist people usando uma list comprehension. Se a palavra-chave 'bipartite' de um nó n em G for igual a 'people', então esse nó deve fazer parte da nodelist.
  • Prepare a nodelist clubs iterando sobre os nós de G, incluindo os metadados. Aqui, note que você precisa verificar se a palavra‑chave 'bipartite' do dicionário de metadados d é igual a 'clubs'. Observação: esta é apenas uma forma alternativa de criar a nodelist. Você não precisa iterar sobre os metadados — pode seguir a mesma abordagem usada para criar a nodelist people, apenas verificando 'clubs' no lugar. Estamos pedindo para você usar a outra abordagem aqui para você praticar as duas.
  • Use nx.bipartite.projected_graph() para calcular as projeções de people e de clubs. Armazene os resultados como peopleG e clubsG.
    • Essa função recebe dois argumentos: o grafo G e a nodelist.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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 = ____
Editar e executar o código