diff --git a/shestakova_maria_lab_1/MSA.png b/shestakova_maria_lab_1/MSA.png new file mode 100644 index 0000000..1b8767b Binary files /dev/null and b/shestakova_maria_lab_1/MSA.png differ diff --git a/shestakova_maria_lab_1/README.md b/shestakova_maria_lab_1/README.md new file mode 100644 index 0000000..0b59206 --- /dev/null +++ b/shestakova_maria_lab_1/README.md @@ -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) diff --git a/shestakova_maria_lab_1/linearRegGraphics.png b/shestakova_maria_lab_1/linearRegGraphics.png new file mode 100644 index 0000000..d895d77 Binary files /dev/null and b/shestakova_maria_lab_1/linearRegGraphics.png differ diff --git a/shestakova_maria_lab_1/polyRegGraphics.png b/shestakova_maria_lab_1/polyRegGraphics.png new file mode 100644 index 0000000..6983608 Binary files /dev/null and b/shestakova_maria_lab_1/polyRegGraphics.png differ diff --git a/shestakova_maria_lab_1/ridgeRegGraphics.png b/shestakova_maria_lab_1/ridgeRegGraphics.png new file mode 100644 index 0000000..cbca2cc Binary files /dev/null and b/shestakova_maria_lab_1/ridgeRegGraphics.png differ diff --git a/shestakova_maria_lab_1/shestakova_maria_lab_1.py b/shestakova_maria_lab_1/shestakova_maria_lab_1.py new file mode 100644 index 0000000..181da06 --- /dev/null +++ b/shestakova_maria_lab_1/shestakova_maria_lab_1.py @@ -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() \ No newline at end of file