K-nächste Nachbarn Schritt für Schritt
Du hast gerade gesehen, wie sich mit K-nächsten Nachbarn vorhersagen lässt, wie jemand einen Artikel bewerten könnte – basierend auf der Weisheit einer (ähnlichen) Gruppe. In dieser Übung gehst du den Prozess selbst Schritt für Schritt durch, damit du genau verstehst, wie er funktioniert.
Zum Einstieg: Da du bereits mehrfach Ähnlichkeitsmatrizen erstellt hast, ist dieser Schritt für dich erledigt worden. Die Nutzer-Ähnlichkeitsmatrix liegt als DataFrame user_similarities vor.
Darin sind alle Nutzer sowohl in den Zeilen als auch in den Spalten, und an ihren Schnittpunkten steht der entsprechende Ähnlichkeitswert.
In dieser Übung arbeitest du mit den Ähnlichkeitswerten von user_001, findest dessen nächste Nachbarn und leitest basierend auf den Bewertungen dieser Nachbarn für einen Film ab, welche Bewertung user_001 dem Film geben könnte, wenn die Person ihn gesehen hätte.
Diese Übung ist Teil des Kurses
Recommendation Engines mit Python entwickeln
Anleitung zur Übung
- Ermittle die IDs der 10 nächsten Nachbarn von
User_A, indem du die Top 10 Nutzer inordered_similaritiesextrahierst und alsnearest_neighborsspeicherst. - Ziehe die Bewertungen der Nutzer in
nearest_neighborsaususer_ratings_tablealsneighbor_ratingsheraus. - Berechne die durchschnittliche Bewertung, die diese Nutzer dem Film
Apollo 13 (1995)gegeben haben, um abzuleiten, welche BewertungUser_Avermutlich geben würde, wenn die Person den Film gesehen hätte.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Isolate the similarity scores for user_1 and sort
user_similarity_series = user_similarities.loc['user_001']
ordered_similarities = user_similarity_series.sort_values(ascending=False)
# Find the top 10 most similar users
nearest_neighbors = ordered_similarities[1:11].____
# Extract the ratings of the neighbors
neighbor_ratings = user_ratings_table.____(nearest_neighbors)
# Calculate the mean rating given by the users nearest neighbors
print(neighbor_ratings['Apollo 13 (1995)'].____())