Контрольная работа
Варианты для контрольной работы: Для всех вариантов в методе ближайших соседей значение k (количество соседей) необходимо брать на 1 больше, чем количество классов в обучающей последовательности.
Варианты обучающих последовательностей и тестового объекта:
1) (X,Y)={(1,8,1), (1,3,1), (3,5,1), (1,1,1), (2,7,1), (3,8,1), (2,4,1), (8,7,2), (11,12,2), (12,14,2), (8,13,2)}: тестовый объект x’=(5,8)
2) (X,Y)={ (2,7,1), (6,6,1), (8,6,1), (7,5,1), (5,9,1), (9,9,2), (11,2,2), (6,4,2), (10,9,2), (8,6,3), (1,10,3), (9,7,3), (5,13,3), (2,14,3)}: тестовый объект x’=(10,8)
3) (X,Y)={ (1,7,1), (3,2,1), (6,8,1), (4,7,1), (9,8,1), (4,5,1), (1,2,1), (14,10,2), (8,12,2), (14,12,2), (11,10,2), (13,8,2), (13,6,2)}: тестовый объект x’=(6,7)
4) (X,Y)={ (7,9,1), (2,5,1), (5,6,1), (8,6,1), (7,6,1), (7,9,2), (14,7,2), (14,2,2), (6,7,2), (10,3,2), (11,9,2), (9,1,2)}: тестовый объект x’=(12,12)
5) (X,Y)={ (2,9,1), (9,3,1), (3,9,1), (5,5,1), (8,9,1), (5,1,1), (6,4,1), (12,8,2), (12,14,2), (12,11,2), (11,6,2), (13,7,2)}: тестовый объект x’=(4,10)
6) (X,Y)={ (7,8,1), (6,7,1), (2,1,1), (2,4,1), (9,9,1), (8,4,1), (4,7,1), (11,13,2), (6,11,2), (14,8,2), (11,7,2)}: тестовый объект x’=(6,1)
7) (X,Y)={ (4,7,1), (4,3,1), (4,8,1), (8,6,2), (14,5,2), (9,4,2), (3,13,3), (8,10,3), (2,7,3)}: тестовый объект x’=(4,9)
8) (X,Y)={ (5,9,1), (2,9,1), (3,7,1), (8,8,2), (14,4,2), (10,1,2), (12,4,2), (7,7,2), (12,7,2), (9,13,3), (2,14,3), (1,7,3), (5,14,3), (6,6,3), (9,6,3)}: тестовый объект x’=(5,6)
9) (X,Y)={ (8,4,1), (9,4,1), (4,2,1), (4,1,1), (8,1,1), (11,7,2), (9,4,2), (12,5,2), (14,1,2), (6,12,3), (7,14,3), (9,9,3), (1,12,3), (4,13,3), (8,9,3)}: тестовый объект x’=(6,10)
10) (X,Y)={ (6,5,1), (1,9,1), (1,9,1), (1,6,1), (8,4,1), (14,11,2), (13,13,2), (6,7,2), (12,11,2), (13,9,2), (9,7,2)}: тестовый объект x’=(7,3)
11) (X,Y)={ (7,2,1), (8,1,1), (8,7,1), (8,2,1), (9,9,1), (6,8,1), (13,8,2), (6,1,2), (11,8,2), (4,12,3), (7,14,3), (1,8,3), (9,6,3)}: тестовый объект x’=(13,10)
Варианты весовых функций:
Лабораторная работа №1 «Метод k ближайших соседей»
Задание на лабораторную работу 1:
Суть лабораторной работы заключается в написании классификатора на основе метода k ближайших соседей. Данные из файла необходимо разбить на две выборки, обучающую и тестовую, согласно общепринятым правилам разбиения. На основе этих данных необходимо обучить разработанный классификатор. На обучающей выборке следует подобрать необходимые параметры метода для лучшей точности, а на тестовой выборке один раз протестировать метод с найденными оптимальными значениями изменяемых параметров (количеством соседей k/ параметрами q и i/ шириной окна h).
В качестве отчёта требуется представить:
Вариант работы.
Работающая программа.
Таблица с результатами тестирования на этапе подбора параметров метода, в которой будет видна зависимость точности предсказания от изменяемого параметра.
Результат работы на тестовой выборке при найденных оптимальных параметрах.
Разбиение выборки необходимо выполнять программно, случайным образом, при этом, не нарушая информативности обучающей выборки. Разбивать рекомендуется по следующему правилу: делим выборку на 3 равных части, 2 части используем в качестве обучающей, одну в качестве тестовой. Кроме того, обучающая выборка должна быть сгенерирована таким образом, чтобы минимизировать разницу между количеством представленных в ней объектов разных классов, т.е. ????????????(|{(???????? , ????????) ∈ ???? ???? |???????? = −1}| − |{(???????? , ????????) ∈ ???? ???? |???????? = 1}|) → ????????????.
Входные данные:
К заданию на лабораторную работу прилагаются файлы, в которых представлены наборы данных из ~104 объектов. Каждый объект описывается двумя признаками (????????(????) ∈ ????) и соответствующим ему классом (???? ∈ {0,1}).
Варианты:
Выполнение лабораторной работы разбито на несколько пунктов, в каждом из которых есть несколько вариантов, выбор варианта опирается на ???????? – последние 2 цифры в пароле.
Первый пункт отвечает за выбор типа классификатора. Вариант выбирается по формуле ????В = (???????? ???????????? 3) + 1:
1. Метод k взвешенных ближайших соседей
2. Метод парзеновского окна с фиксированным h
3. Метод парзеновского окна с относительным размером окна
Для варианта 1 необходимо использовать весовую функцию ???????? по формуле ???????? = (???????????????????? 2) + 1. Параметр ???? подбирается методом скользящего контроля.
1. ???????? = ???? ???? , ???? ∈ (0,1) 2. ???????? = ( ????+1−???? ???? ) ???? , ???? ∈ {2,3,4} В случае 2-го и 3-го вариантов, необходимо использовать функцию ядра ????(????) из списка по следующей формуле ????я = ((????с ∗ 6 + 13) ???????????? 8 ???????????? 3) + 1: 1. Q –квартическое ????(????) = (1 − ???? 2 ) 2 [???? ≤ 1]
2. T – треугольное ????(????) = (1 − ????)[???? ≤ 1]
3. П – прямоугольное ????(????) = [???? ≤ 1]
Кроме того, к лабораторной работе прилагаются 5 файлов с данными для классификации, файл выбирается по следующей формуле ????ф = ((???????? + 2)???????????? 5) + 1
Лабораторная работа №2. «Решающие деревья»
Задание: Классифицировать атаки по типу атак, проверить правильность классификации. Считать файл можно следующим образом:
import pandas as pd df = pd.read_csv('KDDTrain+.txt') test_df = pd.read_csv('KDDTest+.txt') columns = (['duration' ,'protocol_type' ,'service' ,'flag' ,'src_bytes' ,'dst_bytes' ,'land' ,'wrong_fragment' ,'urgent' ,'hot' ,'num_failed_logins' ,'logged_in' ,'num_compromised' ,'root_shell' ,'su_attempted' ,'num_root' ,'num_file_creations' ,'num_shells' ,'num_access_files' ,'num_outbound_cmds' ,'is_host_login' ,'is_guest_login' ,'count' ,'srv_count' ,'serror_rate' ,'srv_serror_rate' ,'rerror_rate' ,'srv_rerror_rate' ,'same_srv_rate' ,'diff_srv_rate' ,'srv_diff_host_rate' ,'dst_host_count' ,'dst_host_srv_count' ,'dst_host_same_srv_rate' ,'dst_host_diff_srv_rate' ,'dst_host_same_src_port_rate' ,'dst_host_srv_diff_host_rate' ,'dst_host_serror_rate' ,'dst_host_srv_serror_rate' ,'dst_host_rerror_rate' ,'dst_host_srv_rerror_rate' ,'attack' ,'level']) df.columns = columns test_df.columns = columns
В файле информация о типах атак находится в столбце «attack», всего их 5 видов:
attack_labels = ['Normal','DoS','Probe','U2R','R2L']
Требуется имеющиеся данные разбить на обучающую и тестовую выборки в процентном соотношении 70 к 30.
После чего по обучающей выборке необходимо построить решающее дерево, а также случайный лес.
Разрешается использовать уже реализованные решающие деревья из известных библиотек (например, scikit-learn для Python).
В качестве отчёта требуется представить:
● Работающая программа, определяющая с помощью изучаемых методов типы атак и процент правильности их определения;
● 2 таблицы, указанные в приложении, показывающие % точности предсказания типа атак в зависимости от изменения параметров дерева решений и леса;
● Параметры дерева, на которых достигается наилучшая точность предсказания;
● Параметры леса, на которых достигается наилучшая точность предсказания;
Лабораторная работа №ЛАБОРАТОРНАЯ РАБОТА 3. «Регрессия»
Целью данной лабораторной работы является разработка программы, реализующей применение метода логистической регрессии к заданному набору данных.
Задание:
используя модель логистической регрессии реализовать прогнозирование реалистичности статьи. 1. Необходимо построить модель для каждого из наборов, обучить её и сравнить полученные при помощи модели результаты с известными. Для обучения использовать 70% выборки, для тестирования 30%. Разбивать необходимо случайным образом, а, следовательно, для корректности тестирования качества модели, эксперимент необходимо провести не менее 10 раз и вычислить среднее значение качества регрессии. 2. Работу регрессии необходимо проверить на конкретном примере. При подаче на вход определённого объекта данных (заголовка статьи, текста, типа и даты) программа должна выводить тип статьи «Fake» или «Frue», выведенное значение необходимо проверить с тем, что находится в исходных данных
Особенности работы с данными:
● После загрузки данных в память необходимо пометить поддельные новости «0», а подлинные новости «1» для дальнейшей работы.
● Для преобразования текста в частотные векторы слова использовать метод TfidfVectorizer().
В качестве отчёта требуется представить:
● Работающую программу, в которой отражено использование метода логистической регрессии для предсказания типа статей.
● Результаты 10 запусков отразить в таблице, где указать номер запуска и процент правильности предсказания типа статьи. Перед каждым запуском данные можно обработать с помощью метода shuffle().
● Среднее значение предсказания типа статьи исходя из 10 запусков.