From d592186245e86c55cb097f5457defeba1a1ef634 Mon Sep 17 00:00:00 2001 From: Ilya Lipatov Date: Sun, 15 Oct 2023 11:48:51 +0400 Subject: [PATCH] lipatov_ilya_lab_1 --- .idea/workspace.xml | 63 ++++++++++++++++++++++++++++++++++-- lipatov_ilya_lab_1/README.md | 35 ++++++++++++++++++++ lipatov_ilya_lab_1/lab1.py | 52 +++++++++++++++++++++++++++++ 3 files changed, 147 insertions(+), 3 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 2dd87a1..2c0857a 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,7 +1,17 @@ + + - + + + + + + + + \ No newline at end of file diff --git a/lipatov_ilya_lab_1/README.md b/lipatov_ilya_lab_1/README.md index e69de29..a76fa89 100644 --- a/lipatov_ilya_lab_1/README.md +++ b/lipatov_ilya_lab_1/README.md @@ -0,0 +1,35 @@ +## Лабораторная работа №1 + +### Работа с типовыми наборами данных и различными моделями + +## Выполнил студент группы ПИбд-41 Липатов Илья + +### Как запустить лабораторную работу: + +* установить python, numpy, matplotlib, sklearn +* запустить проект (стартовая точка класс lab1) + +### Какие технологии использовались: + +* Язык программирования `Python`, библиотеки numpy, matplotlib, sklearn +* Среда разработки `PyCharm` + +### Что делает лабораторная работа: + +* Генерирует набор данных типа с помощью make_circles(noise=0.2, factor=0.5, random_state=4) +* Сравнивает три типа моделей: линейную, полиномиальную (степень 4) и персептрон + +### Примеры работы: + +#### Результаты: +* Линейная регрессия, оценка качества: 0.0494206358498015 +* Полиноминальная регрессия, оценка качества: 0.4480860719638978 +* Персептрон, оценка качества: 0.52 + +#### Самый лучший результат показал персептрон - 0.52 + +#### График линейной, полиномиальной, персептрон: + +![Lineal](lineal.png) +![Polynomial](polynomial.png) +![Perceptron](perceptron.png) diff --git a/lipatov_ilya_lab_1/lab1.py b/lipatov_ilya_lab_1/lab1.py index e69de29..c1ed4e8 100644 --- a/lipatov_ilya_lab_1/lab1.py +++ b/lipatov_ilya_lab_1/lab1.py @@ -0,0 +1,52 @@ +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import PolynomialFeatures +from sklearn.linear_model import LinearRegression +from sklearn.preprocessing import StandardScaler +from sklearn.linear_model import Perceptron +from sklearn.datasets import make_circles +import matplotlib.pyplot as plt +import numpy as np + + +def polynomial(x_train, y_train): + model = PolynomialFeatures(degree=4).fit(x_train, y_train) + x_poly = model.fit_transform(x_train) + lin = LinearRegression() + lin.fit(x_poly, y_train) + plt.scatter(x_train, y_train, color='green') + plt.plot(x_train, lin.predict(x_poly), color='red') + plt.show() + print('Полиноминальная регрессия') + print('Оценка качества:', lin.score(x_poly, y_train)) + + +def lineal(x, y, x_train, y_train): + model = LinearRegression().fit(x_train, y_train) + plt.scatter(x, y, color='green') + plt.plot(x, model.predict(x), color='red') + plt.show() + print('Линейная регрессия') + print('Оценка качества:', model.score(x_train, y_train)) + + +def perceptron(x_test, x_train, y_train): + sc = StandardScaler() + sc.fit(x_train) + x_train_std = sc.transform(x_train) + x_test_std = sc.transform(x_test) + model = Perceptron(eta0=0.1, random_state=1).fit(x_train_std, y_train) + plt.scatter(x_train, y_train, color='green') + plt.plot(x_test_std, model.predict(x_test_std), color='red') + plt.show() + print('Персептрон') + print('Оценка качества:', model.score(x_train, y_train)) + + +x, y = make_circles(noise=0.2, factor=0.5, random_state=10) +x = x[:, np.newaxis, 1] +x = StandardScaler().fit_transform(x) +x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=.5, random_state=42) + +lineal(x_test, y_test, x_train, y_train) +polynomial(x_train, y_train) +perceptron(x_test, x_train, y_train)