|
Интеллектуальные технологии информационной безопасности Вар5
|
|
| engineerklub | Дата: Пятница, 26.07.2024, 06:35 | Сообщение # 1 |
 Генералиссимус
Группа: Администраторы
Сообщений: 37304
Статус: Offline
| Интеллектуальные технологии информационной безопасности. Вариант 05
Тип работы: Работа Лабораторная Форматы файлов: Microsoft Word Сдано в учебном заведении: ДО СИБГУТИ
Описание: Лабораторная работа №1 «Метод k ближайших соседей»
Вариант: 05
Задание на лабораторную работу 1: Суть лабораторной работы заключается в написании классификатора на основе метода k ближайших соседей. Данные из файла необходимо разбить на две выборки, обучающую и тестовую, согласно общепринятым правилам разбиения. На основе этих данных необходимо обучить разработанный классификатор. На обучающей выборке следует подобрать необходимые параметры метода для лучшей точности, а на тестовой выборке один раз протестировать метод с найденными оптимальными значениями изменяемых параметров (количеством соседей k/ параметрами q и i/ шириной окна h).
В качестве отчёта требуется представить: - Вариант работы. - Работающая программа. - Таблица с результатами тестирования на этапе подбора параметров метода, в которой будет видна зависимость точности предсказания от изменяемого параметра. - Результат работы на тестовой выборке при найденных оптимальных параметрах. Разбиение выборки необходимо выполнять программно, случайным образом, при этом, не нарушая информативности обучающей выборки. Разбивать рекомендуется по следующему правилу: делим выборку на 3 равных части, 2 части используем в качестве обучающей, одну в качестве тестовой. Кроме того, обучающая выборка должна быть сгенерирована таким образом, чтобы минимизировать разницу между количеством представленных в ней объектов разных классов, т.е. 𝑎𝑏𝑠(|{(𝑥𝑖, 𝑦𝑖) ∈ 𝑋𝑙 |𝑦𝑖 = −1}| − |{(𝑥𝑖, 𝑦𝑖) ∈ 𝑋𝑙 |𝑦𝑖 = 1}|) → 𝑚𝑖𝑛.
Входные данные: К заданию на лабораторную работу прилагаются файлы, в которых представлены наборы данных из ~10^4 объектов. Каждый объект описывается двумя признаками (𝑓𝑗(𝑥) ∈ 𝑅) и соответствующим ему классом (𝑦 ∈ {0,1}).
Пример чтения данных: import pandas as pd df = pd.read_csv(\\\'data.csv\\\', sep=\\\',\\\')
Варианты: Выполнение лабораторной работы разбито на несколько пунктов, в каждом из которых есть несколько вариантов, выбор варианта опирается на 𝑁𝑐 – последние 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
СКАЧАТЬ
|
| |
|
|
| engineerklub | Дата: Пятница, 26.07.2024, 06:35 | Сообщение # 2 |
 Генералиссимус
Группа: Администраторы
Сообщений: 37304
Статус: Offline
| Лабораторная работа №2
“Решающие деревья”
К заданию прилагается файл с данными, содержащим результаты исследований методов обнаружения вторжений. Файл содержит в себе несколько колонок, все они перечислены:
columns = [\\\'duration\\\', \\\'protocol_type\\\', \\\'service\\\', \\\'flag\\\', \\\'src _bytes\\\', \\\'dst_bytes\\\', \\\'land\\\', \\\'wrong_fragment\\\',\\\'urgent\\\', \\\'hot\\\', \\\'num_failed_logins\\\', \\\'logged_in\\\', \\\'num_compromised\\\', \\\'root_she ll\\\', \\\'su_attempted\\\', \\\'num_root\\\', \\\'num_file_creations\\\', \\\'num_shells\\\', \\\'num _access_files\\\', \\\'num_outbound_cmds\\\', \\\'is_host_login\\\', \\\'is_guest_login\\\', \\\'count\\\', \\\'srv_cou nt\\\', \\\'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_sa me_srv_rate\\\', \\\'dst_host_diff_srv_rate\\\', \\\'dst_host_same_src_port_rate\\\', \\\'dst_host_srv_diff_ho st_rate\\\', \\\'dst_host_serror_rate\\\', \\\'dst_host_srv_serror_rate\\\', \\\'dst_host_rerror_rate\\\', \\\'dst_host_srv_rerror_rate\\\', \\\'attack\\\', \\\'level\\\']
СКАЧАТЬ
|
| |
|
|
| engineerklub | Дата: Пятница, 26.07.2024, 06:35 | Сообщение # 3 |
 Генералиссимус
Группа: Администраторы
Сообщений: 37304
Статус: Offline
| Задание: Классифицировать атаки по типу атак, проверить правильность классификации. Считать файл можно следующим образом: 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 таблицы, указанные в приложении, показывающие % точности предсказания типа атак в зависимости от изменения параметров дерева решений и леса; ● Параметры дерева, на которых достигается наилучшая точность предсказания; ● Параметры леса, на которых достигается наилучшая точность предсказания;
СКАЧАТЬ
|
| |
|
|
| engineerklub | Дата: Пятница, 26.07.2024, 06:36 | Сообщение # 4 |
 Генералиссимус
Группа: Администраторы
Сообщений: 37304
Статус: Offline
| Лабораторная работа №3
“Регрессия”
Целью данной лабораторной работы является разработка программы, реализующей применение метода логистической регрессии к заданному набору данных.
В набор данных входят 2 файла, в «True» находится информация о правдивых новостных заметках, в «Fake.csv» находится информация о поддельных новостях. Каждый файл состоит из следующих полей: 1. (title) – заголовок статьи; 2. (text) – содержимое статьи; 3. (subject) – тип новости; 4. (date) – дата опубликования статьи.
Реализация регрессии в Scikit-Learn На практике предлагается использовать проверенную и широко используемую библиотеку Scikit-Learn для реализации регрессии. Следующая команда импортирует набор данных CSV, используя библиотеку pandas: dataset = pd.read_csv(\\\'Weather.csv\\\') Чтобы увидеть статистические данные набора данных, можно использовать метод describe(): dataset.describe() Затем разделяем 80% данных на обучающий набор, а 20% данных - на набор тестов, используя приведенный ниже код. Переменная test_size - это то место, где мы на самом деле указываем пропорцию тестового набора. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) Наконец, после разделения данных на обучающие и тестовые наборы, настало время обучить наш алгоритм. Для этого нужно импортировать класс LinearRegression, создать его экземпляр и вызвать fit() метод вместе с нашими данными обучения. regressor = LinearRegression() regressor.fit(X_train, y_train) Теперь, когда мы обучили наш алгоритм, пришло время сделать некоторые прогнозы. Для этого будем использовать наши тестовые данные и посмотрим, насколько точно алгоритм предсказывает процентную оценку. Чтобы сделать прогноз на тестовых данных, выполните следующий скрипт: y_pred = regressor.predict(X_test)
Задание: используя модель логистической регрессии реализовать прогнозирование реалистичности статьи. 1. Необходимо построить модель для каждого из наборов, обучить её и сравнить полученные при помощи модели результаты с известными. Для обучения использовать 70% выборки, для тестирования 30%. Разбивать необходимо случайным образом, а, следовательно, для корректности тестирования качества модели, эксперимент необходимо провести не менее 10 раз и вычислить среднее значение качества регрессии. 2. Работу регрессии необходимо проверить на конкретном примере. При подаче на вход определённого объекта данных (заголовка статьи, текста, типа и даты) программа должна выводить тип статьи «Fake» или «Frue», выведенное значение необходимо проверить с тем, что находится в исходных данных. Особенности работы с данными: ● После загрузки данных в память необходимо пометить поддельные новости «0», а подлинные новости «1» для дальнейшей работы. ● Для преобразования текста в частотные векторы слова использовать метод TfidfVectorizer(). В качестве отчёта требуется представить: ● Работающую программу, в которой отражено использование метода логистической регрессии для предсказания типа статей. ● Результаты 10 запусков отразить в таблице, где указать номер запуска и процент правильности предсказания типа статьи. Перед каждым запуском данные можно обработать с помощью метода shuffle(). ● Среднее значение предсказания типа статьи исходя из 10 запусков
СКАЧАТЬ
|
| |
|
|