شما اینجا هستید

رتبه بندی منتقدین

حال که شما توابعی برای مقایسه دو فرد دارید، شما می توانید یک تابع بنویسید و با آن تمام افراد را با فرد مورد نظرات مقایسه کنید و نزدیکترین آنها را بیابید.

در این مثال، من علاقه دارم که بدانم که کدام منتقدین فیلم ها سلیقه ای شبیه به من دارند تا نظر کدام یک از آنان را در مورد دیدن یک فیلم قبول کنم. این تابع را به recommendation.py اضافه کنید تا یک لیست مرتب شده از افراد با سلیقه نزدیک به فرد مورد نظرات بگیرید:

 
# Returns the best matches for person from the prefs dictionary. 
# Number of results and similarity function are optional params.
def topMatches(prefs,person,n=5,similarity=sim_pearson):
  scores=[(similarity(prefs,person,other),other) 
                  for other in prefs if other!=person]
  # Sort the list so the highest scores appear at the top
  scores.sort()
  scores.reverse()
  return scores[0:n] 

این تابع از یک لیست ساده برای مقایسه هر کاربر با من در دیکشنری با استفاده از روش اندازه گیری که از قبل تعریف کرده ایم استفاده می کند. بعد تعداد n مورد را لیست مرتب شده بر می گرداند.

فراخوانی این تابع با نام من یک لیست از منتقدان فیلم و رتبه شباهتشان را بر می گرداند:

 

 >> reload(recommendations)
>> recommendations.topMatches(recommendations.critics,'Toby',n=3)
[(0.99124070716192991, 'Lisa Rose'), (0.92447345164190486, 'Mick LaSalle'),
(0.89340514744156474, 'Claudia Puig')]

با این من می دانم که بهتر است از نظرات و نقد و بررسی ای Lisa Rose استفاده کنم. چرا که نظرات او بیشتر شبیه به من است.

دیدگاه جدیدی بگذارید