CommencerCommencer gratuitement

Comparer tous vos films en une seule fois

Calculer la similarité de Jaccard entre deux films pris individuellement est très utile pour des analyses à petite échelle, mais cela peut devenir lent pour faire des recommandations sur de grands jeux de données.

Dans cet exercice, vous allez trouver les similarités entre tous les films et les stocker dans un DataFrame pour y accéder rapidement et facilement.

Pour calculer les similarités entre les lignes d’un DataFrame, vous pourriez parcourir toutes les paires et les calculer une à une, mais il est plus efficace d’utiliser la fonction pdist() (pairwise distance) de scipy.

Vous pouvez ensuite la remodeler dans la forme rectangulaire souhaitée avec squareform() de la même bibliothèque. Comme vous voulez des valeurs de similarité plutôt que des distances, vous devez soustraire les valeurs à 1.

movie_cross_table a de nouveau été chargé pour vous.

Cet exercice fait partie du cours

Créer des moteurs de recommandation en Python

Afficher le cours

Instructions

  • Trouvez les mesures de distance de Jaccard entre tous les films et affectez les résultats à jaccard_similarity_array.
  • Créez un DataFrame à partir de jaccard_similarity_array en utilisant movie_genre_df.index comme lignes et colonnes.
  • Affichez les 5 premières lignes du DataFrame et examinez les scores de similarité.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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())
Modifier et exécuter le code