شما اینجا هستید
ایجاد مجموعه داده ها بر اساس مقایسه آیتم ها
برای مقایسه آیتم ها، اولین چیزی که باید انجام دهید این است که تابعی بنویسیم که مجموعه کاملی از آیتم های شبیه به هم بسازد. یک بار دیگر، نیازی نیست که این کار برای هر دفعه ای که نیاز به نمایش پیشنهادات داشتیم انجام شود-- به جای آن، این مجموعه داده را یک بار میسازیم و در هر بار که به آن نیاز داشته باشیم از آن استفاده می کنیم.
برای تولید مجموعه داده، تابع زیر را به فایل recommendations.py اضافه می کنیم:
def calculateSimilarItems(prefs,n=10): # Create a dictionary of items showing which other items they # are most similar to. result={} # Invert the preference matrix to be item-centric itemPrefs=transformPrefs(prefs) c=0 for item in itemPrefs: # Status updates for large datasets c+=1 if c%100==0: print "%d / %d" % (c,len(itemPrefs)) # Find the most similar items to this one scores=topMatches(itemPrefs,item,n=n,similarity=sim_distance) result[item]=scores return result
این تابع اول با استفاده از تابع transformPrefs که قبلا ایجادکردیم، دیکشنری رتبه ها را معکوس می کند، یک لیست از آیتم ها و اینکه هر کاربر چه امتیازی به آن داده را می گرداند.
سپس حلقه ای برای هر آیتم ایجاد می کند و دیکشنری تبدیل شده را به تابع topMatches می دهد تا یک لیست از آیتم های که بیشتر از همه شبیه به هم هستند را بر اساس رتبه شباهت بگیرد.
در انتها یک دیکشنری می سازد و برای هر آیتم، لیستی از شبیه ترین آیتم ها به آنرا بر می گرداند.
در محیط اینتر اکتیو پایتون برای یک آیتم مجموعه شباهت ها را بسازید و ببینید شبیه به چه چیزی است:
>>> reload(recommendations) >>> itemsim=recommendations.calculateSimilarItems(recommendations.critics) >>> itemsim {'Lady in the Water': [(0.40000000000000002, 'You, Me and Dupree'), (0.2857142857142857, 'The Night Listener'),... 'Snakes on a Plane': [(0.22222222222222221, 'Lady in the Water'), (0.18181818181818182, 'The Night Listener'),...
به خاطر داشته باشید، این تابع تنها نیاز است که هر چند وقت یک بار اجرا شود تا لیست آیتم های شبیه به هم به روز باشد. این کار بیشتر مواقعی نیاز است که تعداد کاربران و امتیاز های داده شده کم است، اما بعد از مدتی که تعداد کاربران زیاد می شود، اغلب رتبه های شباهت بین آیتم ها کمتر تغییر می کنند.
دیدگاه جدیدی بگذارید