Comparar todas tus películas a la vez
Calcular la similitud de Jaccard entre dos películas concretas de tu conjunto de datos está bien para análisis a pequeña escala, pero puede ser lento en conjuntos de datos grandes para hacer recomendaciones.
En este ejercicio, vas a encontrar las similitudes entre todas las películas y guardarlas en un DataFrame para consultarlas de forma rápida y sencilla.
Al calcular las similitudes entre las filas de un DataFrame, podrías recorrer todos los pares y calcularlas una a una, pero es más eficiente usar la función pdist() (distancia por pares) de scipy.
Esto puede reestructurarse a la forma rectangular deseada usando squareform() de la misma biblioteca. Como quieres valores de similitud en lugar de distancias, debes restar los valores a 1.
movie_cross_table se ha cargado de nuevo para ti.
Este ejercicio forma parte del curso
Creación de motores de recomendación en Python
Instrucciones del ejercicio
- Encuentra las medidas de distancia de Jaccard entre todas las películas y asigna los resultados a
jaccard_similarity_array. - Crea un DataFrame a partir de
jaccard_similarity_arrayusandomovie_genre_df.indexcomo sus filas y columnas. - Imprime las 5 primeras filas del DataFrame y examina las puntuaciones de similitud.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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())