IIS_2023_1/simonov_nikita_lab_1/readme.md
2023-11-05 13:31:50 +04:00

143 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лабораторная работа №1. Вариант 4.
## Задание
Сгенерируйте определенный тип данных и
сравните на нем 3 модели (по варианту). Постройте графики, отобразите качество моделей, объясните полученные результаты.
## Содержание
- [Лабораторная работа №1. Вариант 4.](#лабораторная-работа-1-вариант-4)
- [Задание](#задание)
- [Содержание](#содержание)
- [Введение](#введение)
- [Зависимости](#зависимости)
- [Запуск приложения](#запуск-приложения)
- [Описание кода](#описание-кода)
- [Создание данных](#создание-данных)
- [Создание моделей](#создание-моделей)
- [Обучение и оценка моделей](#обучение-и-оценка-моделей)
- [Веб-приложение](#веб-приложение)
- [Использование](#использование)
- [Модели](#модели)
- [Линейная регрессия](#линейная-регрессия)
- [Полиномиальная регрессия](#полиномиальная-регрессия)
- [Гребневая полиномиальная регрессия](#гребневая-полиномиальная-регрессия)
- [Заключение](#заключение)
## Введение
Это Flask-приложение создано для демонстрации работы различных моделей машинного обучения на сгенерированном наборе данных "Лунные данные". Приложение включает в себя веб-страницу, на которой можно посмотреть визуализацию результатов трех моделей (линейная регрессия, полиномиальная регрессия и гребневая полиномиальная регрессия).
## Зависимости
Для работы этого приложения необходимы следующие библиотеки Python:
- Flask
- Matplotlib
- scikit-learn
- NumPy
- io
Вы можете установить их с помощью pip:
```bash
pip install flask matplotlib scikit-learn numpy
```
## Запуск приложения
Чтобы запустить это Flask-приложение, выполните следующую команду:
```bash
python lab1-web.py
```
Приложение будет доступно по адресу `http://localhost:5000` в вашем веб-браузере.
## Описание кода
### Создание данных
Для создания набора данных используется функция `make_moons` из scikit-learn. Данные представляют собой два класса, сгруппированных в форме лун, с добавлением шума. Затем данные нормализуются с использованием `StandardScaler`, и разделяются на обучающий и тестовый наборы данных.
### Создание моделей
В коде определены три модели машинного обучения:
1. Линейная регрессия.
2. Полиномиальная регрессия четвертой степени. Она создается с использованием `PolynomialFeatures` и логистической регрессии.
3. Гребневая полиномиальная регрессия четвертой степени. Она также создается с использованием `PolynomialFeatures`, но с добавлением регуляризации (гребня) в логистической регрессии.
### Обучение и оценка моделей
Модели обучаются на обучающем наборе данных, и их точность оценивается на тестовом наборе данных с использованием метрики `accuracy_score`, показывающей точность моделей. Результаты оценки сохраняются в словаре `model_results`, который содержит информацию о точности модели и тестовых данных.
### Веб-приложение
Приложение реализовано с использованием Flask:
- маршрут: `/` - главная страница, на которой отображаются результаты работы моделей.
## Использование
1. Запустите приложение, как описано выше.
2. Перейдите по адресу `http://localhost:5000` в вашем веб-браузере.
3. На главной странице вы увидите результаты работы всех трех моделей, включая их точность.
## Модели
### Линейная регрессия
Модель создается следующим образом:
```python
"Линейная регрессия": LogisticRegression()
```
Результат в виде графика:
![](/result/result_1.png)
Точность полученной модели получилась равной 0.875
### Полиномиальная регрессия
Код создания модели:
```python
"Полиномиальная регрессия": make_pipeline(PolynomialFeatures(degree=4), LogisticRegression())
```
Результат в виде графика:
![](/result/result_2.png)
Точность полученной модели получилась равной 0.85
### Гребневая полиномиальная регрессия
Код создания модели:
```python
"Гребневая полиномиальная регрессия": make_pipeline(PolynomialFeatures(degree=4), LogisticRegression(penalty='l2', C=1.0))
```
Результат в виде графика:
![](/result/result_3.png)
Точность полученной модели получилась равной 0.85
## Заключение
Все полученные модели:
![](/result/result_4.png)
1. "Линейная регрессия" продемонстрировала самую высокую точность среди всех трех моделей (0.875).
- Это означает, что линейная модель достаточно хорошо справляется с задачей классификации данных.
- Это может быть следствием хорошо структурированных данных.
2. "Полиномиальная регрессия" и "Гребневая полиномиальная регрессия" имеют одинаковую точность (0.85).
- Обе эти модели показали одинаково хорошие результаты и считаются весьма точными для данной задачи.
- Это может свидетельствовать о наличии нелинейных зависимостей в данных, которые успешно извлечены благодаря использованию полиномиальных признаков и гребневой регуляризации.
- В данном контексте различие между "Полиномиальной регрессией" и "Гребневой полиномиальной регрессией" может быть незначительным, так как точность одинакова.
3. Модели смогли достичь высокой точности, что может указывать на наличие явных зависимостей между признаками и целевой переменной.