From 9bafa16ed1d560dee39d26d25326edde0352ee69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=90=D0=BB=D0=B5?= =?UTF-8?q?=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20=D0=9D=D0=B8=D0=BA=D0=BE?= =?UTF-8?q?=D0=BB=D0=B0=D0=B5=D0=B2=D0=B8=D1=87?= Date: Sun, 24 May 2026 01:24:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D1=91?= =?UTF-8?q?=D0=BD=20README=20=D0=B4=D0=BB=D1=8F=20=D0=A3=D1=87=D0=B5=D0=B1?= =?UTF-8?q?=D0=BD=D0=BE=D0=B9=20=D0=BF=D1=80=D0=B0=D0=BA=D1=82=D0=B8=D0=BA?= =?UTF-8?q?=D0=B5=20=D0=BF=D0=BE=20scikit-learn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 85 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 76 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index cca6a9b..cbcd6aa 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,78 @@ -# Лабораторная 4: scikit-learn +# Лабораторная работа 4: scikit-learn -В рамках работы использованы: -- базовый пример MLPClassifier на датасете Iris; -- пример LOF (Local Outlier Factor) из раздела Nearest Neighbors. +## Описание -## Как запустить -- python -m venv venv -- venv\Scripts\activate -- pip install -r requirements.txt -- jupyter lab \ No newline at end of file +В данной лабораторной работе используется библиотека **scikit-learn** для решения двух задач: + +1. Базовый пример классификации с помощью `MLPClassifier` на датасете **Iris**. +2. Обнаружение выбросов с помощью метода **Local Outlier Factor (LOF)**: + - на синтетических данных (`make_moons` + искусственно добавленные выбросы), + - на реальном датасете **Credit Card Fraud** из OpenML. + +## Цель работы + +Изучить базовые возможности библиотеки **scikit-learn** и применить её: +- для построения модели классификации, +- для решения задачи обнаружения аномалий. + +## Выполненные задания + +### 1. Классификация с помощью MLPClassifier +- Загружен стандартный датасет **Iris**. +- Выполнено разбиение выборки на обучающую и тестовую части. +- Обучена модель `MLPClassifier`. +- Получены метрики качества с помощью `classification_report`. + +### 2. Исследование влияния `max_iter` +- Проверено, как изменение параметра `max_iter` влияет на обучение модели. +- Сравнены результаты при меньшем числе итераций и при `max_iter = 2500`. +- Сделан вывод о том, что увеличение числа итераций позволяет модели лучше сходиться, но на простом датасете Iris заметный прирост качества обычно невелик. + +### 3. Обнаружение выбросов методом LOF на синтетических данных +- Сгенерирован датасет `make_moons`. +- Добавлены искусственные выбросы. +- Данные масштабированы с помощью `StandardScaler`. +- Обучен `LocalOutlierFactor`. +- Построены графики исходных и предсказанных выбросов. + +### 4. Обнаружение выбросов методом LOF на реальных данных +- Загружен датасет **Credit Card Fraud** из OpenML. +- Выбраны числовые признаки. +- Выполнено масштабирование признаков. +- Применён `LocalOutlierFactor`. +- Для визуализации использован `PCA` до двух компонент. + +## Используемые библиотеки + +- `scikit-learn` +- `numpy` +- `pandas` +- `matplotlib` +- `openml` + +## Структура проекта + +- `week4_scikit_learn.ipynb` — основной Jupyter Notebook с выполнением лабораторной работы. +- `README.md` — описание проекта. + +## Запуск + +1. Установить необходимые библиотеки: + ```bash + pip install scikit-learn numpy pandas matplotlib openml notebook + ``` + +2. Запустить Jupyter Notebook: + ```bash + jupyter notebook + ``` + +3. Открыть файл: + ```bash + week4_scikit_learn.ipynb + ``` + +## Краткий вывод + +В ходе работы были изучены базовые инструменты библиотеки **scikit-learn** для задач классификации и обнаружения выбросов. +Было показано, что `MLPClassifier` хорошо работает на датасете Iris, а метод **LOF** позволяет находить аномальные объекты как на синтетических, так и на реальных данных. \ No newline at end of file