Nodos compartidos en la otra partición
Para que vayas entendiendo cómo funcionan los sistemas de recomendación, empezaremos por los fundamentos. Aquí nos centraremos en calcular la similitud entre usuarios en grafos bipartitos.
Tu tarea es escribir una función que reciba dos nodos y devuelva el conjunto de nodos de repositorio que comparten esos dos nodos de usuario.
En este ejercicio te resultarán útiles los siguientes métodos y funciones: .neighbors(), set() y .intersection(), además, por supuesto, de la función shared_partition_nodes que vas a definir.
Este ejercicio forma parte del curso
Análisis de redes intermedio en Python
Instrucciones del ejercicio
- Escribe una función llamada
shared_partition_nodes()que reciba 3 argumentos —un grafoG,node1ynode2— y devuelva el conjunto de nodos que compartennode1ynode2.- Comprueba que
node1ynode2pertenecen a la misma partición usando una instrucción assert y la clave'bipartite'. - Obtén los vecinos de
node1y guárdalos comonbrs1. - Obtén los vecinos de
node2y guárdalos comonbrs2.
- Comprueba que
- Calcula el solapamiento entre
nbrs1ynbrs2usando el método.intersection()de los conjuntos. - Imprime el número de repositorios compartidos entre los usuarios
'u7909'y'u2148'usando tu funciónshared_partition_nodes()junto con la funciónlen().
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
def ____:
# Check that the nodes belong to the same partition
assert G.nodes[____]['bipartite'] == G.nodes[____]['bipartite']
# Get neighbors of node 1: nbrs1
nbrs1 = ____
# Get neighbors of node 2: nbrs2
nbrs2 = ____
# Compute the overlap using set intersections
overlap = ____(____).____(____)
return overlap
# Print the number of shared repositories between users 'u7909' and 'u2148'
print(____(____))