IniziaInizia gratis

Confrontare tutti i tuoi film in una volta sola

Calcolare la similarità di Jaccard tra due singoli film del tuo insieme di dati va benissimo per analisi su piccola scala, ma può risultare lento su insiemi di dati più grandi quando devi fare raccomandazioni.

In questo esercizio, troverai le similarità tra tutti i film e le salverai in un DataFrame per consultazioni rapide e semplici.

Quando calcoli le similarità tra le righe di un DataFrame, potresti scorrere tutte le coppie e calcolarle singolarmente, ma è più efficiente usare la funzione pdist() (pairwise distance) di scipy.

Questo output può essere rimodellato nella forma rettangolare desiderata usando squareform() della stessa libreria. Poiché vuoi valori di similarità invece che distanze, dovresti sottrarre i valori da 1.

movie_cross_table è stato di nuovo caricato per te.

Questo esercizio fa parte del corso

Creare motori di raccomandazione in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Trova le misure di distanza di Jaccard tra tutti i film e assegna i risultati a jaccard_similarity_array.
  • Crea un DataFrame a partire da jaccard_similarity_array usando movie_genre_df.index come indici di righe e colonne.
  • Stampa le prime 5 righe del DataFrame ed esamina i punteggi di similarità.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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())
Modifica ed esegui il codice