ComenzarEmpieza gratis

Calcular la proyección

Es hora de que pruebes a calcular la proyección de un grafo bipartito sobre los nodos de una de sus particiones. Esto te ayudará a practicar cómo convertir entre la versión bipartita de un grafo y sus proyecciones unipartitas. Recuerda del vídeo que la "proyección" de un grafo sobre una de sus particiones es la conectividad de los nodos en esa partición condicionada a las conexiones con nodos de la otra partición. De forma más concreta, puedes pensar en la "conectividad de clientes basada en compras compartidas".

Para ayudarte a empezar, aquí tienes una pista sobre comprensiones de listas. Las comprensiones de listas pueden incluir condiciones, así que si quieres filtrar un grafo por un cierto tipo de nodo, puedes hacer: [n for n, d in G.nodes(data=True) if d['key'] == 'some_value'].

Este ejercicio forma parte del curso

Análisis de redes intermedio en Python

Ver curso

Instrucciones del ejercicio

  • Prepara la lista de nodos people usando una comprensión de listas. Si la palabra clave 'bipartite' de un nodo n en G es igual a 'people', entonces ese nodo debe formar parte de la lista.
  • Prepara la lista de nodos clubs iterando sobre los nodos de G, incluyendo los metadatos. Aquí, ten en cuenta que tienes que comprobar si la palabra clave 'bipartite' del diccionario de metadatos d es igual a 'clubs'. Nota: Esta es simplemente una forma alternativa de crear la lista de nodos. No tienes que iterar sobre los metadatos: puedes seguir el mismo enfoque que usaste para crear la lista people, comprobando 'clubs' en su lugar. Te pedimos que uses el otro enfoque aquí para que practiques ambos.
  • Usa nx.bipartite.projected_graph() para calcular las proyecciones de people y clubs. Guarda los resultados como peopleG y clubsG.
    • Esta función recibe dos argumentos: el grafo G y la lista de nodos.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# 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 y ejecutar código