143 lines
8.2 KiB
Markdown
143 lines
8.2 KiB
Markdown
# Лабораторная работа №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. Модели смогли достичь высокой точности, что может указывать на наличие явных зависимостей между признаками и целевой переменной.
|
||
|