Merge pull request 'Лабораторная работа 1' (#145) from orlov_artem_lab_1 into main

Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/145
This commit is contained in:
Alexey 2023-12-05 22:44:31 +04:00
commit 44023b7305
4 changed files with 80 additions and 0 deletions

View File

@ -0,0 +1,27 @@
### Задание:
Данные: make_moons (noise=0.3, random_state=rs)
Модели:
· Линейную регрессию
· Полиномиальную регрессию (со степенью 5)
· Гребневую полиномиальную регрессию (со степенью 5, alpha= 1.0)
### как запустить лабораторную работу:
Лабораторная работа запускается в файле `main.py` через Run, должно запуститься окно с графиками и вычисления в консоли
### Технологии:
Для решения задач будем использовать следующие библиотеки
matplotlib для построения графиков,
numpy для математических операций,
sklearn для обучения моделей и получения результатов
### Что делает лабораторная:
Выполнение кода выводит точность каждой модели (в консоль) и отображает графики решений для каждой модели.
### Пример выходных значений:
Консоль:
![результат в консоль](console.png)
Графики:
![img.png](gr.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
orlov_artem_lab_1/gr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

53
orlov_artem_lab_1/main.py Normal file
View File

@ -0,0 +1,53 @@
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
from sklearn.linear_model import LinearRegression, Ridge
from sklearn.preprocessing import PolynomialFeatures
# Генерируем данные
rs = 42
X, y = make_moons(noise=0.3, random_state=rs)
# Линейная регрессия
lr = LinearRegression()
lr.fit(X, y)
lr_score = lr.score(X, y)
# Полиномиальная регрессия
poly = PolynomialFeatures(degree=5)
X_poly = poly.fit_transform(X)
lr_poly = LinearRegression()
lr_poly.fit(X_poly, y)
lr_poly_score = lr_poly.score(X_poly, y)
# Гребневая регрессия
ridge = Ridge(alpha=1.0)
ridge.fit(X_poly, y)
ridge_score = ridge.score(X_poly, y)
# Выводим результаты
print(f'Линейная регрессия: {lr_score}')
print(f'Полиномиальная регрессия: {lr_poly_score}')
print(f'Гребневая регрессия: {ridge_score}')
# Построение графиков
plt.figure(figsize=(12, 6))
plt.subplot(141)
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.title('Данные')
plt.subplot(142)
plt.scatter(X[:, 0], lr.predict(X), c=y)
plt.title('Линейная регрессия')
plt.subplot(143)
plt.scatter(X[:, 0], ridge.predict(X_poly), c=y)
plt.title('Гребневая регрессия')
# Добавляем график с полиномиальной регрессией
plt.subplot(144)
plt.scatter(X[:, 0], lr_poly.predict(X_poly), c=y)
plt.title('Полиномиальная регрессия')
plt.tight_layout()
plt.show()