Ähnlichkeitsmetrik für Nutzer
Nachdem du eine Funktion geschrieben hast, die die zwischen zwei Knoten geteilte Knotenmengen berechnet, schreibst du jetzt eine Funktion, die eine Ähnlichkeitsmetrik zwischen zwei Nutzern bestimmt: die Anzahl der von zwei Nutzern geteilten Projekte geteilt durch die Gesamtzahl der Knoten in der anderen Partition. Damit kannst du anschließend Nutzer finden, die einander ähnlich sind.
Diese Übung ist Teil des Kurses
Fortgeschrittene Netzwerkanalyse in Python
Anleitung zur Übung
- Vervollständige die Funktion
user_similarity(), um die Ähnlichkeit zwischenuser1unduser2zu berechnen.- Verwende
assert-Anweisungen, um zu prüfen, dassuser1unduser2zur Partition'users'gehören. - Verwende deine Funktion
shared_partition_nodes()aus der vorherigen Übung, um die Menge der zwischen den beiden Nutzernuser1unduser2geteilten Knoten zu erhalten. - Gib den Anteil der Knoten in der Partition
projectszurück. Teile dazu die Anzahl dershared_nodesdurch die Gesamtzahl der Knoten in der Partition'projects'.
- Verwende
- Berechne den Ähnlichkeitsscore zwischen den Nutzern
'u4560'und'u1880'. Gehe dazu so vor:- Ermittle zuerst die Knoten in der Partition
'projects'mit deiner Funktionget_nodes_from_partition(). - Verwende dann deine Funktion
user_similarity(), um den Score zu berechnen.
- Ermittle zuerst die Knoten in der Partition
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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)