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