Metryka podobieństwa użytkowników
Masz już funkcję obliczającą zbiór węzłów wspólnych dla dwóch węzłów. Teraz napiszesz funkcję wyznaczającą metrykę podobieństwa między dwoma użytkownikami: liczbę projektów wspólnych dla obu użytkowników podzieloną przez łączną liczbę węzłów w drugiej partycji. Taka miara pozwala znajdować użytkowników podobnych do siebie nawzajem.
To ćwiczenie jest częścią kursu
Analiza sieci w Pythonie – poziom średniozaawansowany
Instrukcje do ćwiczenia
- Uzupełnij funkcję
user_similarity(), która oblicza podobieństwo międzyuser1auser2.- Użyj instrukcji
assert, aby sprawdzić, czyuser1iuser2należą do partycji'users'. - Skorzystaj z funkcji
shared_partition_nodes()napisanej w poprzednim ćwiczeniu, aby uzyskać zbiór węzłów wspólnych dlauser1iuser2. - Zwróć ułamek węzłów z partycji
projects– czyli podziel liczbęshared_nodesprzez łączną liczbę węzłów w partycji'projects'.
- Użyj instrukcji
- Oblicz wynik podobieństwa między użytkownikami
'u4560'i'u1880'. W tym celu:- Najpierw pobierz węzły z partycji
'projects'za pomocą funkcjiget_nodes_from_partition(). - Następnie użyj funkcji
user_similarity(), aby obliczyć wynik.
- Najpierw pobierz węzły z partycji
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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)