Aan de slagGa gratis aan de slag

Al je films in één keer vergelijken

Hoewel het berekenen van de Jaccard-overeenkomst tussen twee individuele films in je gegevensset prima werkt voor kleinschalige analyses, kan het bij grotere gegevenssets traag worden om aanbevelingen te doen.

In deze oefening ga je de overeenkomsten tussen alle films bepalen en ze opslaan in een DataFrame, zodat je ze snel en makkelijk kunt opzoeken.

Als je de overeenkomsten tussen de rijen in een DataFrame wilt vinden, kun je alle paren langsgaan en ze afzonderlijk berekenen, maar het is efficiënter om de functie pdist() (pairwise distance) uit scipy te gebruiken.

Dit kun je met squareform() uit dezelfde bibliotheek omvormen naar de gewenste rechthoekige vorm. Omdat je overeenkomstwaarden in plaats van afstanden wilt, moet je de waarden aftrekken van 1.

movie_cross_table is weer voor je ingeladen.

Deze oefening maakt deel uit van de cursus

Aanbevelingssystemen bouwen in Python

Cursus bekijken

Oefeninstructies

  • Zoek de Jaccard-afstanden tussen alle films en ken de resultaten toe aan jaccard_similarity_array.
  • Maak een DataFrame van de jaccard_similarity_array met movie_genre_df.index als zowel de rijen als de kolommen.
  • Print de bovenste 5 rijen van het DataFrame en bekijk de overeenkomstscores.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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())
Code bewerken en uitvoeren