Alle deine Filme auf einmal vergleichen
Die Jaccard-Ähnlichkeit zwischen zwei einzelnen Filmen in deinem Datensatz zu berechnen, ist für Analysen im kleinen Rahmen hilfreich, kann aber bei größeren Datensätzen für Empfehlungen langsam werden.
In dieser Übung findest du die Ähnlichkeiten zwischen allen Filmen und speicherst sie in einem DataFrame, damit du sie schnell und einfach nachschlagen kannst.
Wenn du die Ähnlichkeiten zwischen den Zeilen in einem DataFrame berechnen willst, könntest du alle Paare durchgehen und sie einzeln berechnen. Effizienter ist jedoch die Funktion pdist() (pairwise distance) aus scipy.
Das Ergebnis lässt sich mit squareform() aus derselben Bibliothek in die gewünschte rechteckige Form bringen. Da du Ähnlichkeitswerte statt Distanzen möchtest, solltest du die Werte von 1 abziehen.
movie_cross_table wurde wieder für dich geladen.
Diese Übung ist Teil des Kurses
Recommendation Engines mit Python entwickeln
Anleitung zur Übung
- Ermittle die Jaccard-Distanzmaße zwischen allen Filmen und weise die Ergebnisse
jaccard_similarity_arrayzu. - Erstelle einen DataFrame aus dem
jaccard_similarity_arrayund verwendemovie_genre_df.indexfür Zeilen und Spalten. - Gib die obersten 5 Zeilen des DataFrames aus und untersuche die Ähnlichkeitswerte.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Import functions from scipy
from scipy.spatial.distance import pdist, squareform
# Calculate all pairwise distances
jaccard_distances = ____(movie_cross_table.values, metric='____')
# Convert the distances to a square matrix
jaccard_similarity_array = 1 - ____(____)
# Wrap the array in a pandas DataFrame
jaccard_similarity_df = pd.____(jaccard_similarity_array, ____=movie_cross_table.index, ____=movie_cross_table.index)
# Print the top 5 rows of the DataFrame
print(jaccard_similarity_df.head())