Merge pull request 'shestakova_maria_lab_1 is ready' (#220) from shestakova_maria_lab_1 into main

Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/220
This commit is contained in:
Alexey 2023-12-05 22:50:49 +04:00
commit 205e558e12
6 changed files with 99 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@ -0,0 +1,33 @@
### Задание:
Данные: make_moons (noise=0.3, random_state=rs)
Модели:
- Линейная регрессия
- Полиномиальная регрессия (со степенью 5)
- Гребневая полиномиальная регрессия (со степенью 5, alpha= 1.0)
### Технологии:
Библиотека Scikit-learn, библиотека numpy, библиотека matplotlib
### Что делает лабораторная:
В данной лабораторной работе мы сгенерировали данные, обучили и оценили три модели (линейную регрессию, полиномиальную регрессию и гребневую полиномиальную регрессию) на этих данных. Затем мы построили графики и вывели среднеквадратичную ошибку (MSE) для каждой модели. Графики позволяют нам визуализировать данные, их классификацию и границы решения моделей, а MSE показывает, насколько хорошо каждая модель соответствует данным. Чем меньше значение MSE, тем лучше модель соответствует данным. Меньшее значение MSE для полиномиальной регрессии указывает на то, что эта модель лучше соответствуют данным.
### Как запустить:
Лабораторная работа запускается в файле `shestakova_maria_lab_1.py` через Run: открывается окно и появляется вывод в консоли
### Пример выходных значений:
Консоль:
![результат в консоли](MSE.png)
Графики:
![img2.png](linearRegGraphics.png)
![img3.png](polyRegGraphics.png)
![img4.png](ridgeRegGraphics.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 533 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 485 KiB

View File

@ -0,0 +1,66 @@
from matplotlib import pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn.linear_model import LinearRegression, Ridge
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PolynomialFeatures
from sklearn.datasets import make_moons
from sklearn import metrics
cm_bright = ListedColormap(['#8B0000', '#FF0000'])
cm_bright1 = ListedColormap(['#FF4500', '#FFA500'])
def create_moons():
x, y = make_moons(noise=0.3, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=.4, random_state=42)
linear_regretion(X_train, X_test, y_train, y_test)
polynomial_regretion(X_train, X_test, y_train, y_test)
ridge_regretion(X_train, X_test, y_train, y_test)
def linear_regretion(x_train, x_test, y_train, y_test):
model = LinearRegression().fit(x_train, y_train)
y_predict = model.intercept_ + model.coef_ * x_test
plt.title('Линейная регрессия')
print('Линейная регрессия')
plt.scatter(x_train[:, 0], x_train[:, 1], c=y_train, cmap=cm_bright)
plt.scatter(x_test[:, 0], x_test[:, 1], c=y_test, cmap=cm_bright1, alpha=0.7)
plt.plot(x_test, y_predict, color='red')
print('MAE', metrics.mean_absolute_error(y_test, y_predict[:, 1]))
print('MSE', metrics.mean_squared_error(y_test, y_predict[:, 1]))
plt.show()
def polynomial_regretion(x_train, x_test, y_train, y_test):
polynomial_features = PolynomialFeatures(degree=5)
X_polynomial = polynomial_features.fit_transform(x_train, y_train)
base_model = LinearRegression()
base_model.fit(X_polynomial, y_train)
y_predict = base_model.predict(X_polynomial)
plt.title('Полиномиальная регрессия')
plt.scatter(x_train[:, 0], x_train[:, 1], c=y_train, cmap=cm_bright)
plt.scatter(x_test[:, 0], x_test[:, 1], c=y_test, cmap=cm_bright1, alpha=0.7)
plt.plot(x_train, y_predict, color='blue')
plt.show()
print('Полиномиальная регрессия')
print('MAE', metrics.mean_absolute_error(y_train, y_predict))
print('MSE', metrics.mean_squared_error(y_train, y_predict))
def ridge_regretion(X_train, X_test, y_train, y_test):
model = Pipeline([('poly', PolynomialFeatures(degree=5)), ('ridge', Ridge(alpha=1.0))])
model.fit(X_train, y_train)
y_predict = model.predict(X_test)
plt.title('Гребневая полиномиальная регрессия')
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cm_bright)
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=cm_bright1, alpha=0.7)
plt.plot(X_test, y_predict, color='blue')
plt.show()
print('Гребневая полиномиальная регрессия')
print('MAE', metrics.mean_absolute_error(y_test, y_predict))
print('MSE', metrics.mean_squared_error(y_test, y_predict))
create_moons()