Kom igångKom igång gratis

Jämför alla filmer på en gång

Att beräkna Jaccard-likheten mellan två enskilda filmer i din datamängd fungerar bra för mindre analyser, men kan bli långsamt på större datamängder när rekommendationer ska genereras.

I den här övningen beräknar du likheterna mellan alla filmer och lagrar dem i en DataFrame för snabb och enkel uppslagning.

När du ska hitta likheterna mellan raderna i en DataFrame kan du gå igenom alla par och beräkna dem ett i taget – men det är mer effektivt att använda funktionen pdist() (pairwise distance) från scipy.

Resultatet kan formas om till önskad rektangulär form med hjälp av squareform() från samma bibliotek. Eftersom du vill ha likheter i stället för avstånd ska du subtrahera värdena från 1.

movie_cross_table har laddats in åt dig igen.

Den här övningen är en del av kursen

Bygga rekommendationsmotorer i Python

Visa kurs

Övningsinstruktioner

  • Beräkna Jaccard-avståndsmåtten mellan alla filmer och tilldela resultaten till jaccard_similarity_array.
  • Skapa en DataFrame från jaccard_similarity_array med movie_genre_df.index som rader och kolumner.
  • Skriv ut de 5 översta raderna i DataFrame och granska likhetsmåtten.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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())
Redigera och kör kod