ComeçarComece de graça

Comparando todos os seus filmes de uma vez

Embora calcular a similaridade de Jaccard entre dois filmes individuais do seu conjunto de dados seja ótimo para análises em pequena escala, isso pode ser lento em conjuntos de dados maiores para fazer recomendações.

Neste exercício, você vai encontrar as similaridades entre todos os filmes e armazená-las em um DataFrame para consulta rápida e fácil.

Ao calcular as similaridades entre as linhas de um DataFrame, você poderia percorrer todos os pares e calculá-las individualmente, mas é mais eficiente usar a função pdist() (distância par a par) do scipy.

Isso pode ser remodelado para o formato retangular desejado usando squareform() da mesma biblioteca. Como você quer valores de similaridade em vez de distâncias, deve subtrair os valores de 1.

movie_cross_table já foi carregado para você.

Este exercício faz parte do curso

Construindo mecanismos de recomendação em Python

Ver curso

Instruções do exercício

  • Encontre as medidas de distância de Jaccard entre todos os filmes e atribua o resultado a jaccard_similarity_array.
  • Crie um DataFrame a partir de jaccard_similarity_array, usando movie_genre_df.index como linhas e colunas.
  • Imprima as 5 primeiras linhas do DataFrame e examine as pontuações de similaridade.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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())
Editar e executar o código