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
Instruções do exercício
- Prepare a nodelist
peopleusando uma list comprehension. Se a palavra-chave'bipartite'de um nónemGfor igual a'people', então esse nó deve fazer parte da nodelist. - Prepare a nodelist
clubsiterando sobre os nós de G, incluindo os metadados. Aqui, note que você precisa verificar se a palavra‑chave'bipartite'do dicionário de metadadosdé 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 nodelistpeople, 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 comopeopleGeclubsG.- Essa função recebe dois argumentos: o grafo
Ge a nodelist.
- Essa função recebe dois argumentos: o grafo
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 = ____