सभी फिल्मों की एक साथ तुलना
आपके डेटासेट में किसी भी दो व्यक्तिगत फिल्मों के बीच Jaccard similarity निकालना छोटे विश्लेषणों के लिए ठीक है, लेकिन बड़े डेटासेट पर सिफारिशें बनाने में यह धीमा पड़ सकता है.
इस अभ्यास में, आप सभी फिल्मों के बीच समानता निकालेंगे और उन्हें एक DataFrame में स्टोर करेंगे ताकि जल्दी और आसानी से lookup किया जा सके.
जब आप किसी DataFrame की पंक्तियों के बीच similarities खोजते हैं, तो आप हर जोड़ी पर चलकर उन्हें अलग-अलग भी गणना कर सकते हैं, लेकिन scipy की pdist() (pairwise distance) फंक्शन का उपयोग करना अधिक कुशल है.
इसे उसी लाइब्रेरी की squareform() से वांछित आयताकार आकार में बदला जा सकता है. चूँकि आपको distances नहीं बल्कि similarity मान चाहिए, इसलिए आपको मूल्यों को 1 में से घटाना चाहिए.
movie_cross_table आपके लिए फिर से लोड कर दिया गया है.
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में रिकमेंडेशन इंजन बनाना
अभ्यास निर्देश
- सभी फिल्मों के बीच Jaccard distance माप निकालें और परिणाम
jaccard_similarity_arrayको असाइन करें. jaccard_similarity_arrayसे एक DataFrame बनाएँ, जिसकी rows और columns के लिएmovie_genre_df.indexका उपयोग हो.- DataFrame की शीर्ष 5 पंक्तियाँ प्रिंट करें और similarity स्कोर जाँचें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# 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())