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