Membandingkan semua film Anda sekaligus
Mencari kesamaan Jaccard antara dua film individual dalam himpunan data Anda sangat berguna untuk analisis skala kecil, tetapi pada himpunan data yang lebih besar, pendekatan ini bisa lambat untuk membuat rekomendasi.
Dalam latihan ini, Anda akan mencari kesamaan antar semua film dan menyimpannya dalam sebuah DataFrame agar dapat diakses dengan cepat dan mudah.
Saat menghitung kesamaan antarbaris dalam sebuah DataFrame, Anda bisa menelusuri semua pasangan dan menghitungnya satu per satu, tetapi akan lebih efisien menggunakan fungsi pdist() (pairwise distance) dari scipy.
Hasilnya dapat dibentuk ulang ke bentuk persegi panjang yang diinginkan menggunakan squareform() dari pustaka yang sama. Karena Anda menginginkan nilai kesamaan, bukan jarak, Anda perlu mengurangkan nilai tersebut dari 1.
movie_cross_table telah dimuat kembali untuk Anda.
Latihan ini adalah bagian dari kursus
Membangun Recommendation Engine di Python
Petunjuk latihan
- Temukan ukuran jarak Jaccard antar semua film dan tetapkan hasilnya ke
jaccard_similarity_array. - Buat sebuah DataFrame dari
jaccard_similarity_arraydenganmovie_genre_df.indexsebagai baris dan kolomnya. - Cetak 5 baris teratas dari DataFrame dan periksa skor kesamaannya.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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())