เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

เปรียบเทียบภาพยนตร์ทั้งหมดพร้อมกัน

การหาค่า Jaccard similarity ระหว่างภาพยนตร์สองเรื่องในชุดข้อมูลเหมาะสำหรับการวิเคราะห์ขนาดเล็ก แต่หากชุดข้อมูลมีขนาดใหญ่ขึ้น วิธีนี้อาจช้าเกินไปสำหรับการสร้างคำแนะนำ

ในแบบฝึกหัดนี้ จะหาค่าความคล้ายคลึงระหว่างภาพยนตร์ทั้งหมด แล้วเก็บผลลัพธ์ไว้ใน DataFrame เพื่อให้ค้นหาได้รวดเร็วและสะดวก

ในการคำนวณความคล้ายคลึงระหว่างแถวทุกคู่ใน DataFrame แทนที่จะวนลูปคำนวณทีละคู่ วิธีที่มีประสิทธิภาพกว่าคือใช้ฟังก์ชัน pdist() (pairwise distance) จาก scipy

จากนั้นปรับรูปร่างผลลัพธ์ให้เป็นอาร์เรย์สี่เหลี่ยมด้วย squareform() จากไลบรารีเดียวกัน เนื่องจากต้องการค่าความคล้ายคลึง ไม่ใช่ระยะทาง ให้นำค่าที่ได้ไปลบออกจาก 1

โหลด movie_cross_table ไว้ให้แล้ว

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การสร้าง Recommendation Engine ด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • หาค่า Jaccard distance ระหว่างภาพยนตร์ทุกเรื่อง แล้วกำหนดผลลัพธ์ให้กับ jaccard_similarity_array
  • สร้าง DataFrame จาก jaccard_similarity_array โดยใช้ movie_genre_df.index เป็นทั้งแถวและคอลัมน์
  • แสดง 5 แถวแรกของ DataFrame และตรวจสอบคะแนนความคล้ายคลึง

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# 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())
แก้ไขและรันโค้ด