CommencezCommencez gratuitement

Comparer tous vos films en une seule fois

Calculer la similarité de Jaccard entre deux films pris individuellement fonctionne bien pour de petites analyses, mais cela peut devenir lent sur de plus grands jeux de données pour faire des recommandations.

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

Pour trouver 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.

On peut ensuite remodeler le tout en une forme rectangulaire avec squareform() de la même bibliothèque. Comme vous voulez des valeurs de similarité plutôt que des distances, vous devriez soustraire les valeurs de 1.

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

Cette activité fait partie du cours

Créer des moteurs de recommandation en Python

Voir le cours

Instructions de l’exercice

  • Trouvez les distances de Jaccard entre tous les films et assignez les résultats à jaccard_similarity_array.
  • Créez un DataFrame à partir de jaccard_similarity_array avec 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 ce code d’exemple.

# 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