IIS_2023_1/orlov_artem_lab_1/main.py

53 lines
1.5 KiB
Python
Raw Normal View History

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()