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