Wspólne węzły w drugiej partycji
Zanim przejdziemy do budowy systemów rekomendacji, zacznijmy od podstaw. W tym ćwiczeniu skupiamy się na obliczaniu podobieństwa między użytkownikami w grafach dwudzielnych.
Twoim zadaniem jest napisanie funkcji, która przyjmuje dwa węzły i zwraca zbiór węzłów repozytoriów wspólnych dla obu użytkowników.
W tym ćwiczeniu przydadzą ci się: metoda .neighbors(), funkcja set() oraz metoda .intersection() – a oczywiście także funkcja shared_partition_nodes, którą sam zdefiniujesz!
To ćwiczenie jest częścią kursu
Analiza sieci w Pythonie – poziom średniozaawansowany
Instrukcje do ćwiczenia
- Napisz funkcję o nazwie
shared_partition_nodes(), która przyjmuje 3 argumenty – grafG,node1inode2– i zwraca zbiór węzłów wspólnych dlanode1inode2.- Sprawdź za pomocą instrukcji assert i słowa kluczowego
'bipartite', czynode1inode2należą do tej samej partycji. - Pobierz sąsiadów węzła
node1i zapisz je jakonbrs1. - Pobierz sąsiadów węzła
node2i zapisz je jakonbrs2.
- Sprawdź za pomocą instrukcji assert i słowa kluczowego
- Oblicz część wspólną zbiorów
nbrs1inbrs2za pomocą metody.intersection(). - Wyświetl liczbę wspólnych repozytoriów użytkowników
'u7909'i'u2148', korzystając z funkcjishared_partition_nodes()oraz funkcjilen().
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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(____(____))