Métrica de similitud de usuarios
Después de escribir una función para calcular el conjunto de nodos que comparten dos nodos, ahora vas a implementar una función que calcule una métrica de similitud entre dos usuarios: el número de proyectos compartidos entre dos usuarios dividido por el número total de nodos en la otra partición. Luego podrás usarla para encontrar usuarios similares entre sí.
Este ejercicio forma parte del curso
Análisis de redes intermedio en Python
Instrucciones del ejercicio
- Completa la función
user_similarity()para calcular la similitud entreuser1yuser2.- Usa sentencias
assertpara comprobar queuser1yuser2pertenecen a la partición'users'. - Usa tu función
shared_partition_nodes()del ejercicio anterior para obtener el conjunto de nodos compartidos entre los usuariosuser1yuser2. - Devuelve la fracción respecto a los nodos de la partición
projects. Es decir, divide el número deshared_nodesentre el número total de nodos en la partición'projects'.
- Usa sentencias
- Calcula la puntuación de similitud entre los usuarios
'u4560'y'u1880'. Para ello:- Primero, obtén los nodos de la partición
'projects'usando tu funciónget_nodes_from_partition(). - Luego, usa tu función
user_similarity()para calcular la puntuación.
- Primero, obtén los nodos de la partición
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
def user_similarity(G, user1, user2, proj_nodes):
# Check that the nodes belong to the 'users' partition
____ G.nodes[____]['bipartite'] == '____'
____ G.nodes[____]['bipartite'] == '____'
# Get the set of nodes shared between the two users
shared_nodes = ____
# Return the fraction of nodes in the projects partition
return len(____) / len(____)
# Compute the similarity score between users 'u4560' and 'u1880'
project_nodes = ____
similarity_score = ____
print(similarity_score)