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:
commit
205e558e12
BIN
shestakova_maria_lab_1/MSA.png
Normal file
BIN
shestakova_maria_lab_1/MSA.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 49 KiB |
33
shestakova_maria_lab_1/README.md
Normal file
33
shestakova_maria_lab_1/README.md
Normal 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)
|
BIN
shestakova_maria_lab_1/linearRegGraphics.png
Normal file
BIN
shestakova_maria_lab_1/linearRegGraphics.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 349 KiB |
BIN
shestakova_maria_lab_1/polyRegGraphics.png
Normal file
BIN
shestakova_maria_lab_1/polyRegGraphics.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 533 KiB |
BIN
shestakova_maria_lab_1/ridgeRegGraphics.png
Normal file
BIN
shestakova_maria_lab_1/ridgeRegGraphics.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 485 KiB |
66
shestakova_maria_lab_1/shestakova_maria_lab_1.py
Normal file
66
shestakova_maria_lab_1/shestakova_maria_lab_1.py
Normal 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()
|
Loading…
Reference in New Issue
Block a user