Obliczanie rzutu grafu
Czas samodzielnie obliczyć rzut grafu dwudzielnego na węzły jednej z jego partycji. Dzięki temu przećwiczysz konwersję między dwudzielną reprezentacją grafu a jego jednostronnymi rzutami. Przypomnij sobie z wideo, że „rzut" grafu na jedną z jego partycji to łączność węzłów w tej partycji uwarunkowana połączeniami z węzłami drugiej partycji. Mówiąc konkretniej, możesz to rozumieć jako „łączność klientów na podstawie wspólnych zakupów".
Na dobry początek – wskazówka dotycząca wyrażeń listowych. Wyrażenia listowe mogą zawierać warunki, więc jeśli chcesz odfiltrować graf w poszukiwaniu określonego typu węzłów, możesz użyć zapisu: [n for n, d in G.nodes(data=True) if d['key'] == 'some_value'].
To ćwiczenie jest częścią kursu
Analiza sieci w Pythonie – poziom średniozaawansowany
Instrukcje do ćwiczenia
- Przygotuj listę węzłów
people, używając wyrażenia listowego. Jeśli klucz'bipartite'węzłanw grafieGjest równy'people', węzeł ten powinien znaleźć się na liście. - Przygotuj listę węzłów
clubs, iterując po węzłach grafu G wraz z metadanymi. Zwróć uwagę, że tym razem należy sprawdzić, czy klucz'bipartite'słownika metadanychdjest równy'clubs'. Uwaga: to po prostu alternatywny sposób tworzenia listy węzłów. Iterowanie po metadanych nie jest konieczne – możesz zastosować to samo podejście co przy tworzeniu listypeople, sprawdzając jedynie wartość'clubs'. Prosimy o użycie tego drugiego podejścia, żebyś miał(-a) praktykę z oboma metodami. - Użyj funkcji
nx.bipartite.projected_graph(), aby obliczyć rzuty dla osób i klubów. Wyniki zapisz odpowiednio jakopeopleGiclubsG.- Funkcja przyjmuje dwa argumenty: graf
Goraz listę węzłów.
- Funkcja przyjmuje dwa argumenty: graf
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Prepare the nodelists needed for computing projections: people, clubs
# This exercise shows you two ways to do it, one with `data=True` and one without.
people = [n for n in G.nodes() if G.nodes[____]['____'] == '____']
clubs = [n for n, d in G.nodes(data=True) if d['____'] == '____']
# Compute the people and clubs projections: peopleG, clubsG
peopleG = ____
clubsG = ____