53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
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() |