Bắt đầu ngayBắt đầu miễn phí

So sánh tất cả phim của bạn cùng lúc

Việc tìm độ tương đồng Jaccard giữa từng cặp phim riêng lẻ trong tập dữ liệu rất hữu ích cho phân tích quy mô nhỏ, nhưng khi đưa ra gợi ý trên tập dữ liệu lớn thì có thể chậm.

Trong bài tập này, bạn sẽ tìm độ tương đồng giữa tất cả các phim và lưu chúng vào một DataFrame để tra cứu nhanh và tiện.

Khi tính độ tương đồng giữa các hàng trong một DataFrame, bạn có thể duyệt qua mọi cặp và tính từng cái một, nhưng hiệu quả hơn là dùng hàm pdist() (pairwise distance) từ scipy.

Kết quả có thể được biến đổi về dạng ma trận hình chữ nhật mong muốn bằng squareform() từ cùng thư viện. Vì bạn muốn giá trị tương đồng thay vì khoảng cách, hãy lấy 1 trừ đi các giá trị đó.

movie_cross_table đã được nạp sẵn cho bạn.

Bài tập này là một phần của khóa học

Xây dựng Recommendation Engine bằng Python

Xem khóa học

Hướng dẫn bài tập

  • Tìm các độ đo khoảng cách Jaccard giữa tất cả các phim và gán kết quả cho jaccard_similarity_array.
  • Tạo một DataFrame từ jaccard_similarity_array với movie_genre_df.index làm cả hàng và cột.
  • In 5 hàng đầu của DataFrame và xem xét các điểm số tương đồng.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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())
Chỉnh sửa và Chạy Mã