LoslegenKostenlos loslegen

Ähnliche Nutzer finden

Du baust jetzt auf dem auf, was du bisher gelernt hast, und schreibst eine Funktion namens most_similar_users(), die die Nutzer findet, die einem gegebenen Nutzer am ähnlichsten sind.

Der Anfang dieser Funktion wurde bereits für dich geschrieben. Es wurde eine Liste von Knoten user_nodes erstellt, die alle Nutzer enthält, außer dem gegebenen Nutzer, der an die Funktion übergeben wurde. Deine Aufgabe ist es, die Funktion so zu vervollständigen, dass sie die Nutzer findet, die diesem gegebenen Nutzer am ähnlichsten sind. Dabei verwendest du deine Funktion user_similarity() aus der vorherigen Übung.

Ein Dictionary namens similarities wurde eingerichtet, in dem die Schlüssel die Scores und die Werte Listen von Knoten sind. Wenn du noch nie von einem defaultdict gehört hast, keine Sorge – in Kapitel 3 lernst du mehr darüber! Es funktioniert genau wie ein normales Python-Dictionary.

Diese Übung ist Teil des Kurses

Fortgeschrittene Netzwerkanalyse in Python

Kurs anzeigen

Anleitung zur Übung

  • Iteriere über user_nodes und berechne mit deiner Funktion user_similarity() die Ähnlichkeit zwischen user und jedem user_node (n). Speichere das Ergebnis als similarity.
  • Hänge den Score und den Knoten an das Dictionary similarities an. Der Schlüssel ist der Score – similarity – und der Wert ist der Knoten – n.
  • Berechne den maximalen Ähnlichkeits-Score. Greife dazu zuerst mit der Methode .keys() auf die Schlüssel (die die Scores enthalten) von similarities zu und verwende anschließend die Funktion max(). Speichere das Ergebnis als max_similarity.
  • Gib die Liste der Nutzer zurück, die die maximale Ähnlichkeit teilen. Diese Liste ist der Wert des Schlüssels max_similarity in similarities.
  • Verwende deine Funktion most_similar_users(), um die Liste der Nutzer auszugeben, die dem Nutzer 'u4560' am ähnlichsten sind.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

from collections import defaultdict

def most_similar_users(G, user, user_nodes, proj_nodes):
    # Data checks
    assert G.nodes[user]['bipartite'] == 'users'

    # Get other nodes from user partition
    user_nodes = set(user_nodes)
    user_nodes.remove(user)

    # Create the dictionary: similarities
    similarities = defaultdict(list)
    for n in ____:
        similarity = ____(____, ____, ____, ____)
        ____[____].____

    # Compute maximum similarity score: max_similarity
    max_similarity = ____

    # Return list of users that share maximal similarity
    return ____[____]

user_nodes = get_nodes_from_partition(G, 'users')
project_nodes = get_nodes_from_partition(G, 'projects')

print(____)
Code bearbeiten und ausführen