Ранжирование критиков

Имея функции для сравнения двух людей, можно написать функцию, которая будет вычислять оценку подобия всех имеющихся людей с данным человеком и искать наилучшее соответствие. В данном случае меня интересуют кинокритики с таким же вкусом, как у меня. Тогда я буду знать, на кого ориентироваться, принимая решение о выборе фильма. Включите в файл recommendations.py следующую функцию, создающую список людей, вкусы которых похожи на вкусы заданного человека:

#  Возвращает список наилучших соответствий для человека из словаря prefs.

#  Количество результатов в списке и функция подобия – необязательные

#  параметры.

def topMatches(prefs,person,n=5,similarity=sim_pearson): scores=[(similarity(prefs,person,other),other)

for other in prefs if other!=person]

# Отсортировать список по убыванию оценок scores.sort( ) scores.reverse( ) return scores[0:n]

Эта функция сравнивает меня со всеми остальными хранящимися в словаре пользователями с помощью одной из ранее определенных метрик, применяя для этого трансформацию списка (list comprehension). И возвращает первые n элементов отсортированного списка результатов.

Если вызвать ее, передав мое имя, то она вернет список кинокритиков и оценку подобия со мной для каждого из них: >> reload(recommendations)

>> recommendations.topMatches(recommendations.critics,’Toby’,n=3)

[(0.99124070716192991, ‘Lisa Rose’), (0.92447345164190486, ‘Mick LaSalle’), (0.89340514744156474, ‘Claudia Puig’)]

Теперь я знаю, что имеет смысл читать обзоры Lisa Rose, так как ее вкусы больше всего похожи на мои собственные. Если вы смотрели какие-нибудь из указанных фильмов, то можете добавить себя в словарь, прописать свои предпочтения и посмотреть, кто окажется вашим любимым кинокритиком.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100