Главная страница
Навигация по странице:

  • 1. Для чего используется настройка набора данных 2. Для чего используется сортировка 3. Для чего используется обработчик «Дата и время»

  • 5. Что такое дубликаты и противоречия

  • Лабораторные по МИСПИТ. ЛР. Интеллектуальные системы


    Скачать 1.43 Mb.
    НазваниеИнтеллектуальные системы
    АнкорЛабораторные по МИСПИТ
    Дата21.05.2023
    Размер1.43 Mb.
    Формат файлаpdf
    Имя файлаЛР.pdf
    ТипМетодические указания
    #1148348
    страница4 из 6
    1   2   3   4   5   6
    1. Что такое автокорреляционный анализ?
    2. Что такое АКФ?

    3. Что такое корреляционный анализ?
    4. Что такое факторный анализ?

    5. Какие задачи решает факторный анализ?
    6. Что такое варимакс и квартимакс?


    69 7. Какова главная проблема факторного анализа?
    Список литературы
    1. Сайт basegroup.ru.
    2. Руководство пользователя ПО Deductor Academic.
    3. Описание демопримеров ПО Deductor Academic.

    70
    Лабораторная работа №8. Дубликаты и противоречия. Трансфор- мация данных
    Цель работы: Научиться выявлять дубликаты и противоречия
    Введение
    Дубликаты и противоречия
    При построении модели регрессии или классификации в анализи- руемых таблицах нужно определить входные и выходные поля, зави- симости между которыми и исследуются. Предполагается, что значе- ния входных полей полностью определяют значения выходных.
    При подобной постановке задачи возможно возникновение про- тиворечий, то есть присутствие групп записей, значения в ключевых
    (входных) полях которых полностью совпадают, а в целевых (выход- ных) – различаются. Например, если значения в ключевых полях – это коды товаров, а в целевых – цены этих товаров, то присутствие двух записей с одинаковым кодом, но с разной ценой как раз и создаёт про- тиворечие. Обычно бывает так, что только одна запись из группы про- тиворечивых является правильной, а остальные – ошибочными. Оче- видно, что присутствие ошибочных данных искажает результаты ана- лиза, поэтому противоречивые данные чаще всего лучше вообще ис- ключить из исходной выборки. Однако следует заметить, что искус- ственное введение противоречий в исходные данные может быть по- лезным, например, если нужно ввести некоторую неопределённость в данные, кроме того противоречия могут отражать особенности пове- дения анализируемого объекта.
    Также в данных могут встречаться записи с одинаковыми вход- ными факторами и одинаковыми выходными, т.е. дубликаты. Эти дан- ные чаще всего избыточны, хотя присутствие дубликатов в анализиру- емых данных можно рассматривать как способ повышения «значимо- сти» дублирующийся информации. В некоторых случаях такой приём может быть полезен, например, если при обучении нейросети нужно особо выделить и усилить влияние некоторых наборов значений. Од- нако в других случаях дублирование может указывать на ошибки при подготовке исходных данных. Дубликаты могут искажать результаты некоторых методов анализа, например, статистического.
    Так или иначе, в процессе анализа иногда возникает проблема выявления дубликатов и противоречий в данных. В Deductor для авто-

    71 матизации этого процесса есть соответствующий инструмент – обра- ботчик «Дубликаты и противоречия».

    Дубликаты – записи в таблице, все входные и выходные поля которых одинаковые.

    Противоречия – записи в таблице, у которых все входные поля одинаковые, но отличаются хотя бы по одному выходному полю.
    Суть обработки состоит в том, что определяются входные и вы- ходные поля. Алгоритм ищет во всем наборе записи, для которых оди- наковым входным полям соответствуют одинаковые (дубликаты) или разные (противоречия) выходные поля. На основании этой информа- ции создаются два дополнительных логических поля – «Дубликат» и
    «Противоречие», принимающие значения «истина» или «ложь», и до- полнительные числовые поля «Группа дубликатов» и «Группа проти- воречий», в которые записываются номер группы дубликатов и груп- пы противоречий, содержащих данную запись. Если запись не являет- ся дубликатом или противоречием, то соответствующие поля будут пустыми.
    Настройка выявления дубликатов и противоречий заключается в выборе назначений полей исходной выборки данных, то есть в выборе, какие поля входные, а какие – выходные.
    Трансформация данных
    Анализируемая информация, представленная в виде набора дан- ных, имеет определённый формат. Под форматом данных подразуме- вается отнесение их к определённому типу (целочисленные, строко- вые, даты), задание вида (дискретные или непрерывные) и т. п. Для анализа различных аспектов информации может потребоваться преоб- разование её формата или трансформация. Кроме преобразования форматов трансформация включает в себя изменение представления данных и другие операции, связанные с преобразованиями входного набора данных.
    Настройка набора данных
    Обработчик «Настройка набора данных» предназначен для изме- нения имени, метки, типа, вида и назначения полей текущей выборки данных и кэширования выходного набора.

    72
    У каждого поля можно изменить метку столбца, которая будет использоваться для дальнейшей работы в программе. Если в текущей выборке данных поле имеет имя «Name», ему можно задать метку
    «Наименование», что гораздо удобнее при дальнейшем отображении этого поля в таблицах или диаграммах.
    Изменение имени поля удобно в тех случаях, когда имена столб- цов могут измениться в источнике данных или при перенастройке уз- лов верхних уровней. В этом случае в узле «Настройка набора дан- ных» имя исходного столбца заменяется другим, на которое и настраи- ваются все дочерние узлы. После такой операции изменение имён по- лей на верхних уровнях не потребует перенастройки всех дочерних узлов в дереве сценариев.
    У каждого поля можно изменить вид, тип данных, назначение.
    Сортировка
    С помощью сортировки можно изменять порядок следования за- писей в исходной выборке данных в соответствии с заданным пользо- вателем алгоритмом сортировки. Результатом выполнения сортировки будет новая выборка данных, записи в которой будут следовать в со- ответствии с заданными параметрами сортировки.
    Дата и время
    Преобразование даты служит для анализа всевозможных показа- телей за определённый период (год, квартал, месяц, неделя, день, час, минута, секунда). Суть преобразования заключается в том, что на ос- нове столбца с информацией о дате/времени формируются один или несколько столбцов, в которых указывается, к какому заданному ин- тервалу времени принадлежит строка данных. Тип интервала задаётся аналитиком, исходя из того, что он хочет выделить из даты.
    Такая операция требуется потому, что очень часто интересным для анализа является не сама дата, а её производная. Например, для анализа посещаемости магазина интересен день недели, а для оценки загруженности касс – час.
    Замена данных
    В результате выполнения этой операции производится замена значений по таблице подстановки, которая содержит пары, состоящие из исходного значения и выходного значения. Например, 0 – «крас-

    73 ный», 1 – «зелёный», 2 – «синий». Или «зима» – «январь», «весна» –
    «апрель», «лето» – «июль», «осень» - «октябрь». Для каждого значения исходного набора данных ищется соответствие среди исходных значе- ний таблицы подстановки. Если соответствие найдено, то значение меняется на соответствующее выходное значение из таблицы подста- новки. Если значение не найдено в таблице, оно может быть либо за- менено значением, указанным для замены «по умолчанию», либо оставлено без изменений (если такое значение не указано). Кроме того, можно указать значения, которые нужно вставить вместо пустых яче- ек.
    Описание программного обеспечения
    Данная лабораторная работа должна выполняться при помощи
    ПО Deductor Academic 5.3.
    Домашнее задание студентам для подготовки к выполнения лабо- раторной работы
    Изучить по лекциям и учебной литературе особенности выявле- ния дубликатов и противоречий.
    Задание №1. Выявление дубликатов и противоречий
    Пусть есть следующая таблица
    Табл.12
    Поле 1
    Поле 2
    Поле 3
    Поле 4 01.01.2014 2
    1000 1500 21.05.2014 3
    1000 1500 21.05.2014 3
    700 1500 21.05.2014 3
    700 1500 01.09.2014 4
    1200 1700 01.09.2014 4
    1200 1700 1. Скопируйте её в txt-файл.
    2. Импортируйте данные из файла в Deductor.

    74 3. При помощи обработчика «Настройка набора данных», изме- ните названия полей на более информативные (проявите фан- тазию). Измените тип «Поля 2» на строковый.
    4. Отсортируйте данные по убыванию (первый столбец).
    5. Выполните преобразование даты. Добавьте столбец «Дата
    (Год+Месяц)» в строковом формате.
    6. Замените значения второго столбца на какие-либо другие при помощи обработчика «Замена данных».
    7. Проведите поиск дубликатов и противоречий.
    8. Сделайте скриншот полученных результатов.
    Содержание отчёта:
    1. Титульный лист.
    2. Цель лабораторной работы.
    3. Задание №1: Результаты выполнения пунктов 3-8.
    Контрольные вопросы

    1. Для чего используется настройка набора данных?
    2. Для чего используется сортировка?

    3. Для чего используется обработчик «Дата и время»?
    4. Для чего используется замена данных?

    5. Что такое дубликаты и противоречия?
    Список литературы
    1. Сайт basegroup.ru.
    2. Руководство пользователя ПО Deductor Academic.
    3. Описание демопримеров ПО Deductor Academic.

    75
    Лабораторная работа №9. Выработка рекомендаций
    Цель работы: Ознакомиться с методами искусственного интеллекта, используемыми для формирования рекомендаций
    Введение
    Формирование рекомендаций на основе предпочтений других людей используется в различных ситуациях: рекомендование товаров на сайте электронной торговли, указание интересных сайтов или по- мощь в поиске нужной музыки и фильмов.
    Информацию о предпочтениях можно собирать по-разному. Ино- гда данными являются купленные посетителем товары, а мнения об этих товарах представляются в виде голосования «да/нет» или оценки по пятибалльной шкале.
    Коллаборативная фильтрация
    С нетехнологичным способом получить рекомендацию о товаре, фильме или развлекательном сайте вы знакомы. Достаточно спросить у друзей. Знаете вы и о том, что у некоторых ваших друзей вкус луч- ше, чем у других; вы имели возможность убедиться в этом, поскольку не раз оказывалось, что им нравится то же, что и вам. Но по мере уве- личения количества предложений становится все менее практично ос- новывать решение на опросе небольшой группы людей, поскольку они могут просто не знать обо всех имеющихся вариантах. Тут-то и прихо- дит на помощь то, что принято называть коллаборативной фильтраци- ей.
    Обычно алгоритм коллаборативной фильтрации работает следу- ющим образом: просматривает большую группу людей и отыскивает в ней меньшую группу с такими же вкусами, как у вас. Он смотрит, ка- кие ещё вещи им нравятся, объединяет предпочтения и создаёт ранжи- рованный список предложений. Есть несколько способов решить, ка- кие люди похожи, и объединить их предпочтения в список.
    Сначала нужно представить информацию о предпочтениях лю- дей. В данной работе для этого будет использоваться вложенный сло- варь. Он удобен для экспериментов с алгоритмами и иллюстрации их возможностей. Большой объём информации, конечно, удобнее хранить в базе данных.
    Собрав данные о том, что нравится людям, нужно определить схожесть их вкусов. Для этого каждый человек сравнивается со всеми

    76 другими и вычисляется коэффициент (или оценка) правдоподобия. Для этого можно использовать разные способы. В данной лабораторной работе речь пойдёт о двух из них: евклидовом расстоянии и коэффи- циенте корреляции Пирсона.
    Один из самых простых способов вычисления оценки подобия – это евклидово расстояние. В этом случае предметы, которые люди оценивали сообща, представляются в виде координатных осей. Теперь в этой системе координат можно расположить точки, соответствую- щие людям, и посмотреть, насколько они оказались близки (рис)
    На этом рисунке показаны люди, представленные точками в про- странстве предпочтений. Toby имеет координату 4,5 по оси Snakes и координату 1,0 по оси Dupree. Чем ближе два человека в пространстве предпочтений, тем более схожи их предпочтения. Поскольку эта диа- грамма двумерная, то одновременно можно смотреть только на два показателя, но принцип остаётся тем же самым и для большего числа показателей.
    Рис.31. Люди в пространстве предпочтений
    Коэффициент корреляции Пирсона
    Чуть более сложный способ определить степень схожести интере- сов людей даёт коэффициент корреляции Пирсона. Коэффициент кор- реляции – это мера того, насколько хорошо два набора данных ложат-

    77 ся на прямую. Формула сложнее, чем для вычисления евклидова рас- стояния, но она даёт лучшие результаты, когда данные плохо нормали- зованы, например, если некоторый критик устойчиво выставляет фильмам более низкие оценки, чем в среднем.
    Для визуализации этого метода можно нанести на диаграмму оценки, выставленные двумя критиками, как показано на рис. . Mick
    LaSalle оценил фильм «Superman» на 3, а Gene Seymour – на 5, поэтому мы наносим точку (3,5).
    Рис. 32. Сравнение двух кинокритиков на точечной диаграмме
    На диаграмме также изображена прямая линия. Она называется линией наилучшего приближения, поскольку проходит настолько близко ко всем точкам на диаграмме, насколько возможно. Если бы оба критика выставили всем фильмам одинаковые оценки, то эта ли- ния оказалась бы диагональной и прошла бы через все точки. В этом случае получилась бы идеальная корреляция с коэффициентом 1. Но в нашем случае критики разошлись в оценках, поэтому коэффициент корреляции равен 0,4. На рис. показан пример с гораздо более высо- ким коэффициентом корреляции 0,75.

    78
    Рис. 33. Два критика с высоким коэффициентом корреляции
    У коэффициента корреляции Пирсона есть одно интересное свой- ство, которое можно наблюдать на рисунке – он корректирует обесце- нивание оценок.
    Видно, что Jack Matthews систематически выставляет более высо- кие оценки, чем Lisa Rose, но линия всё равно проходит близко к точ- кам, поскольку их предпочтения схожи. Если один критик склонен выставлять более высокие оценки, чем другой, то идеальная корреля- ция всё равно возможна при условии, что разница в оценках постоян- на. Метод евклидова расстояния в этом случае выдал бы результат, что критики не похожи, поскольку один всегда оказывается строже друго- го, несмотря на то, что их вкусы, по существу, очень сходны. В зави- симости от конкретного приложения такое поведение может вас устраивать или нет.
    Программа для вычисления коэффициента корреляции Пирсона сначала находит фильмы, оценённые обоими критиками, и вычисляет сумму и сумму квадратов выставленных ими оценок, а также сумму произведений оценок. На последнем этапе (строки 65 – 69) найденные значения используются для вычисления коэффициента корреляции. В отличие от евклидовой метрики, эта формула интуитивно не так оче- видна.

    79
    Эта функция возвращает значение от -1 до 1. Значение 1 означает, что два человека выставили каждому предмету в точности одинаковые оценки. В отличие от евклидовой метрики, масштабировать возвра- щённое значение для приведения к нужному диапазону не требуется.
    Описание программного обеспечения
    Данная лабораторная работа должна выполняться при помощи
    Python 2.7.
    Домашнее задание студентам для подготовки к выполнения лабо- раторной работы
    Изучить по учебной литературе особенности работы с Python.
    Задание №1. Использование оценки по евклидову расстоянию для определения подобия между парами критиков.
    1. Скопируйте файл recommendations.py в какую-нибудь новую папку.
    2. Откройте его в Notepad++. Изучите его структуру (до строки
    39).
    Структура файла recommendations.py (до строки 39):
    Строки 3–19 – вложенный словарь. Он содержит имена критиков и перечень оценок, которые они выставили соответствующим фильмам.
    Строки 22-38 – функция оценки подобия по евклидову расстоянию.
    3. Найти оценку подобия между следующими парами критиков:
    Lisa Rose и Gene Seymour, Michael Phillips и Claudia Puig, Mick
    LaSalle и Jack Matthews, Lisa Rose и Jack Matthews, Michael
    Phillips и Mick LaSalle.
    Нахождение оценки подобия:
    А) Запустите IDLE (Python GUI). Откройте в нём recommendations.py
    (File -> Open)
    Б) Откроется новое окно с текстом программного кода. Запустите файл на выполнение (Run -> Run Module или нажмите F5).
    В) В появившемся окне введите: import recommendations

    80 нажмите «Enter» recommendations.sim_distance(recommendations.critics,'X','Y'), где X – имя первого критика, а Y – второго. Нажмите «Enter». Скопируйте в отчёт полученное значение оценки. Повторите процедуру необходимое количество раз.
    4. Сделайте выводы относительно полученных результатов.
    Задание №2. Использование оценки по евклидову расстоянию для определения подобия между парами критиков (другие данные).
    1. Сделайте копию файла recommendations.py. Назовите её recommendations1.py.
    2. Откройте его в Notepad++. Удалите строки 3-19. Создайте свой вложенный словарь (по образу словаря из задания 1).
    В качестве критиков могут выступать, например, Ваши друзья. Фильмы – на Ваше усмотрение. Формат оценок – как в recommendations.py. Язык – английский (транслит).
    3. Найдите оценку подобия между 5 парами критиков.
    4. Сделайте выводы относительно полученных результатов.
    Задание №3. Определите степень схожести интересов людей при помощи коэффициента корреляции
    Пирсона
    (для файла recommendations.py)
    Описание структуры файла recommendations.py.
    Строки 41 – 71 – возвращает коэффициент корреляции Пирсона:
    # Возвращает коэффициент корреляции Пирсона между p1 и p2 def sim_pearson(prefs,p1,p2):
    # Получить список предметов, оценённых обоими si={} for item in prefs[p1]: if item in prefs[p2]: si[item]=1
    # Найти число элементов n=len(si)

    81
    # Если нет ни одной общей оценки, вернуть 0 if n==0: return 0
    # Вычислить сумму всех предпочтений sum1=sum([prefs[p1][it] for it in si]) sum2=sum([prefs[p2][it] for it in si])
    # Вычислить сумму квадратов sum1Sq=sum([pow(prefs[p1][it],2) for it in si]) sum2Sq=sum([pow(prefs[p2][it],2) for it in si])
    # Вычислить сумму произведений pSum=sum([prefs[p1][it]*prefs[p2][it] for it in si])
    # Вычислить коэффициент Пирсона num=pSum-(sum1*sum2/n) den=sqrt((sum1Sq-pow(sum1,2)/n)*(sum2Sq-pow(sum2,2)/n)) if den==0: return 0 r=num/den return r
    1. Определите степень схожести интересов пар критиков (взять из задания №1).
    2. Запустите IDLE (Python GUI). Откройте в нём recommenda- tions.py (File -> Open).
    3. Откроется новое окно с текстом программного кода. Запусти- те файл на выполнение (Run -> Run Module или нажмите F5).
    4. В появившемся окне введите: import recommendations нажмите «Enter» print recommendations.sim_pearson(recommendations.critics, 'Li- sa Rose','Gene Seymour').
    5. Повторите процедуру необходимое количество раз.
    6. Сделайте выводы.
    Задание №4. Определите степень схожести интересов людей при помощи коэффициента корреляции Пирсона (другие данные)

    82
    Определите степень схожести интересов людей при помощи ко- эффициента корреляции Пирсона (для файла recommendations1.py).
    1. Определите степень схожести для Ваших данных (аналогично заданию №3).
    2. Сделайте выводы.
    Задание №5. Ранжирование критиков
    Имея функции для сравнения двух людей, можно написать функ- цию, которая будет вычислять оценку подобия всех имеющихся людей с данным человеком и искать наилучшее соответствие. Допустим, нас интересуют кинокритики с таким же вкусом, как у Lisa Rose. За реали- зацию этой возможности в 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 элементов отсортированного списка результатов.
    Если вызвать её, передав соответствующее имя, то она вернёт список кинокритиков и оценку подобия выбранного человека для каж- дого из них.

    83 1. Выполните ранжирование критиков (для всех, имеющихся в словаре).
    2. Запустите IDLE (Python GUI). Откройте в нём recommenda- tions.py (File -> Open).
    3. Откроется новое окно с текстом программного кода. Запусти- те файл на выполнение (Run -> Run Module или нажмите F5).
    4. В появившемся окне введите: import recommendations нажмите «Enter» recommendations.topMatches(recommendations.critics,'X',n=3), где Х – имя критика.
    5. Скопируйте результаты в отчёт.
    6. Выполните вышеуказанную процедуру необходимое количе- ство раз.
    7. Сделайте выводы.
    Задание №6. Ранжирование критиков (другие данные)
    1. Выполните ранжирование критиков для Ваших данных (ана- логично заданию №5).
    2. Сделайте выводы.
    Задание №7. Рекомендование предметов
    Найти подходящего критика – это, конечно, неплохо, но в дей- ствительности-то хочется получить рекомендацию, какой фильм по- смотреть. И прямо сейчас. Можно было бы посмотреть, какие фильмы понравились человеку с похожими вкусами, и выбрать из них те, что ещё не просмотрены.
    Но при таком подходе можно было бы случайно наткнуться на критиков, ничего не писавших о фильмах, которые могли бы мне по- нравиться. Можно также отобрать критика, которому почему-то по- нравился фильм, получивший отрицательные отзывы от всех осталь- ных критиков, вошедших в список topMatches.
    Чтобы разрешить эти проблемы, необходимо ранжировать сами фильмы, вычислив взвешенную сумму оценок критиков. Для примера возьмём критика Toby. Берём каждого из отобранных критиков и умножаем его оценку подобия с Toby на оценку, которую он выставил каждому фильму. В табл. показан результат вычислений.

    84
    В этой таблице приведены коэффициенты корреляции для каждо- го критика и оценки, поставленные ими трём фильмам («The Night
    Listener», «Lady in the Water» и «Just My Luck»), которые Toby не оце- нивал. В столбцах «П.x» находится произведение коэффициента подо- бия на оценку, выставленную критиком. Смысл в том, чтобы мнение критика с похожими на Toby вкусами вносило больший вклад в общую оценку, чем мнение критика, не похожего него. В строке «Итого» при- ведены суммы, вычисленных таким образом величин. Можно было бы использовать для ранжирования сами эти суммы, но тогда фильм, ко- торый просмотрело больше людей, получил бы преимущество. Чтобы исправить эту несправедливость, необходимо разделить полученную величину на сумму коэффициентов подобия для всех критиков, кото- рые рецензировали фильм (строка «S подоб» в таблице).
    Табл.13
    Критик
    Подобие Night П.х
    Night
    Lady П.х
    Lady
    Luck П.х
    Luck
    Rose
    0.99 3.0 2.97 2.5 2.48 3.0 2.97
    Seymour
    0.38 3.0 1.14 3.0 1.14 1.5 0.57
    Puig
    0.89 4.5 4.02 3.0 2.68
    LaSalle
    0.92 3.0 2.77 3.0 2.77 2.0 1.85
    Matthews 0.66 3.0 1.99 3.0 1.99
    Итого
    12.89 8.38 8.07
    S подоб
    3.84 2.95 3.18
    Итого /
    S подоб.
    3.35 2.83 2.53
    Поскольку фильм «The Night Listener» рецензировали все, вели- чина «Итого» для него делится на сумму всех коэффициентов подобия.
    Напротив, фильм «Lady in the Water» критик Puig не рецензировал, следовательно, в этом случае величина «Итого» делится на сумму ко- эффициентов подобия всех критиков, кроме Puig. В последней строке показано частное от деления.
    Всё вышеперечисленное реализуется добавлением следующего кода:
    # Получить рекомендации для заданного человека, пользуясь взвешен-
    ным средним
    # оценок, данных всеми остальными пользователями
    def getRecommendations(prefs,person,similarity=sim_pearson):

    85 totals={} simSums={} for other in prefs:
    # сравнивать заданного человека (Toby, в данном случае) с собой же не нужно if other==person: continue sim=similarity(prefs,person,other)
    # игнорировать нулевые и отрицательные оценки
    if sim<=0: continue for item in prefs[other]:
    # оценивать только фильмы, которые заданный человек ещё не смот-
    рел
    if item not in prefs[person] or prefs[person][item]==0:
    # Коэффициент подобия * Оценка
    totals.setdefault(item,0) totals[item]+=prefs[other][item]*sim
    # Сумма коэффициентов подобия
    simSums.setdefault(item,0) simSums[item]+=sim
    # Создать нормализованный список
    rankings=[(total/simSums[item],item) for item,total in totals.items( )]
    # Вернуть отсортированный список
    rankings.sort( ) rankings.reverse( ) return rankings
    Код, реализующий этот алгоритм, абсолютно прямолинеен и мо- жет работать как с евклидовым расстоянием, так и с коэффициентом корреляции Пирсона.
    В цикле осуществляется обход всех людей, присутствующих в словаре prefs.
    Для каждого вычисляется коэффициент подобия с заданным че- ловеком person. Далее обходятся все фильмы, которым текущий кри- тик выставил оценку. В строке, выделенной полужирным шрифтом,

    86 вычисляется окончательная оценка фильма – оценка, данная каждым критиком, умножается на коэффициент подобия этого критика и про- изведения суммируются. В самом конце оценки нормализуются путём деления на сумму коэффициентов подобия и возвращается отсортиро- ванный список результатов.
    1. Запустите IDLE (Python GUI). Откройте в нём recommenda- tions.py (File -> Open).
    2. Откроется новое окно с текстом программного кода. Запусти- те файл на выполнение (Run -> Run Module или нажмите F5).
    3. В появившемся окне введите: import recommendations нажмите «Enter» recommenda- tions.getRecommendations(recommendations.critics,'Toby') скопируйте результат в отчёт введите (многоточие при вводе удалите): recommenda- tions.getRecommendations(recommendations.critics,'Toby',
    ... similarity=recommendations.sim_distance) скопируйте результат в отчёт
    В результате выполнения этого задания, мы получили не только ранжированный список фильмов, но и прогноз оценок, которые задан- ный пользователь поставит каждому из них. Имея такую информацию, можно решить, стоит ли вообще смотреть фильм. В зависимости от приложения вы можете вообще не давать рекомендаций, если не нашлось ничего, отвечающего стандартам данного пользователя. По- экспериментировав, вы обнаружите, что выбор метрики подобия влия- ет на результаты очень слабо.
    4. Проделайте вышеуказанную процедуру для все критиков из списка.
    5. Сделайте выводы
    Задание №8. Рекомендование предметов (другие данные)
    1. Выполните рекомендование предметов для Ваших данных
    (аналогично заданию №7).

    87 2. Сделайте выводы.
    Содержание отчёта:
    5. Титульный лист.
    6. Цель лабораторной работы.
    7. Задание №1 и №2: Результаты выполнения пунктов 3-4.
    8. Задание №3: Результаты выполнения пунктов 4-6.
    9. Задание №4: Результаты выполнения пунктов 1-2.
    10. Задание №5: Результаты выполнения пунктов 4-7.
    11. Задание №6: Результаты выполнения пунктов 1-2.
    12. Задание №7: Результаты выполнения пунктов 3-5.
    13. Задание №8: Результаты выполнения пунктов 1-2.
    Контрольные вопросы

    1   2   3   4   5   6


    написать администратору сайта