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
Instrucciones del ejercicio
- Prepara la lista de nodos
peopleusando una comprensión de listas. Si la palabra clave'bipartite'de un nodonenGes igual a'people', entonces ese nodo debe formar parte de la lista. - Prepara la lista de nodos
clubsiterando sobre los nodos de G, incluyendo los metadatos. Aquí, ten en cuenta que tienes que comprobar si la palabra clave'bipartite'del diccionario de metadatosdes 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 listapeople, 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 comopeopleGyclubsG.- Esta función recibe dos argumentos: el grafo
Gy la lista de nodos.
- Esta función recibe dos argumentos: el grafo
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 = ____