diff --git a/.idea/IIS_2023_1.iml b/.idea/IIS_2023_1.iml
index 4e6ce24..f2c30eb 100644
--- a/.idea/IIS_2023_1.iml
+++ b/.idea/IIS_2023_1.iml
@@ -1,8 +1,10 @@
-
-
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index b6db721..fde0489 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,9 @@
-
+
+
+
+
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 42c41de..95c3327 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -5,6 +5,8 @@
+
+
@@ -34,6 +36,9 @@
"associatedIndex": 2
}
+
+
+
@@ -42,8 +47,16 @@
"keyToString": {
"RunOnceActivity.OpenProjectViewOnStart": "true",
"RunOnceActivity.ShowReadmeOnStart": "true",
+ "WebServerToolWindowFactoryState": "false",
+ "git-widget-placeholder": "senkin__alexander__lab__1",
"last_opened_file_path": "D:/ulstukek/Course4/IIS/labs",
- "settings.editor.selected.configurable": "reference.settings.ide.settings.new.ui"
+ "node.js.detected.package.eslint": "true",
+ "node.js.detected.package.tslint": "true",
+ "node.js.selected.package.eslint": "(autodetect)",
+ "node.js.selected.package.tslint": "(autodetect)",
+ "nodejs_package_manager_path": "npm",
+ "settings.editor.selected.configurable": "reference.settings.ide.settings.new.ui",
+ "vue.rearranger.settings.migration": "true"
}
}
@@ -52,7 +65,7 @@
-
+
@@ -65,6 +78,7 @@
+
@@ -86,6 +100,7 @@
+
@@ -107,6 +122,7 @@
+
@@ -134,18 +150,38 @@
1695412818437
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/senkin_alexander_lab_1/Linear.png b/senkin_alexander_lab_1/Linear.png
new file mode 100644
index 0000000..d877b57
Binary files /dev/null and b/senkin_alexander_lab_1/Linear.png differ
diff --git a/senkin_alexander_lab_1/Polynomial.png b/senkin_alexander_lab_1/Polynomial.png
new file mode 100644
index 0000000..d97d552
Binary files /dev/null and b/senkin_alexander_lab_1/Polynomial.png differ
diff --git a/senkin_alexander_lab_1/README.md b/senkin_alexander_lab_1/README.md
new file mode 100644
index 0000000..24ef0d1
--- /dev/null
+++ b/senkin_alexander_lab_1/README.md
@@ -0,0 +1,38 @@
+Вариант 2
+
+Задание на лабораторную работу:
+
+По данным построить графики 3 моделей:
+
+- Линейную регрессию
+- Полиномиальную регрессию (со степенью 3)
+- Гребневую полиномиальную регрессию (со степенью 3, alpha = 1.0)
+
+Данные: make_circles (noise=0.2, factor=0.5, random_state=rs)
+
+Как запустить лабораторную работу:
+
+Чтобы увидеть работу программы, нужно запустить исполняемый питон файл senkin_alexander_lab_1.py, после чего будут отрисованы 3 графика, которые также можно увидеть в формате png в папке проекта.
+
+Библиотеки
+
+Matplotlib. Используется для создания графиков.
+
+Sklearn. Предоставляет инструменты и алгоритмы, которые упрощают задачи, связанные с машинным обучением.
+
+Описание программы:
+
+- Генерируем набор данных из 100 точек данных используя функцию make_circles
+- С помощью функции train_test_split разделяем данные на тестовые и обучающие в соотношении 20 к 80
+- Создаем 3 модели:
+- Линейную регрессию
+- Полиномиальную регрессию (со степенью 3)
+- Гребневую полиномиальную регрессию (со степенью 3, alpha = 1.0)
+- Модели используем для предсказания классов с помощью метода predict
+- Оцениваем точность каждой модели
+- Строим графики для визуального представления и оценивая работ моделей
+- Сравниваем точности моделей и выбираем наиболее точную
+
+![Linear.png](Linear.png)![Polynomial.png](Polynomial.png)![Ridge.png](Ridge.png)
+
+Изходя из результатов: Линейная - 0.30, Полиномиальная - 0.45, Гребневая полиномиальная - 0.47, делаем вывод, что наиболее точная модель - Гребневая полиномиальная.
\ No newline at end of file
diff --git a/senkin_alexander_lab_1/Ridge.png b/senkin_alexander_lab_1/Ridge.png
new file mode 100644
index 0000000..2994eda
Binary files /dev/null and b/senkin_alexander_lab_1/Ridge.png differ
diff --git a/senkin_alexander_lab_1/senkin_alexander_lab_1.py b/senkin_alexander_lab_1/senkin_alexander_lab_1.py
new file mode 100644
index 0000000..2a18a03
--- /dev/null
+++ b/senkin_alexander_lab_1/senkin_alexander_lab_1.py
@@ -0,0 +1,60 @@
+import matplotlib.pyplot as plt
+from sklearn.datasets import make_circles
+from sklearn.linear_model import LinearRegression
+from sklearn.linear_model import Ridge
+from sklearn.metrics import r2_score
+from sklearn.model_selection import train_test_split
+from sklearn.preprocessing import PolynomialFeatures
+
+# Создаем данные
+rs = 42 #желаемый random_state
+X, y = make_circles(n_samples=100, noise=0.2, factor=0.5, random_state=rs)
+
+# Разделяем данные на обучающий и тестовый наборы
+X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=rs)
+
+# Обучаем модели
+# Линейная регрессия
+lr = LinearRegression()
+lr.fit(X_train, y_train)
+y_lr_pred = lr.predict(X_test)
+r2_lr = r2_score(y_test, y_lr_pred)
+
+# Полиномиальная регрессия с полиномом 3-й степени
+poly = PolynomialFeatures(degree=3)
+X_poly = poly.fit_transform(X_train)
+lr_poly = LinearRegression()
+lr_poly.fit(X_poly, y_train)
+X_test_poly = poly.transform(X_test)
+y_poly_pred = lr_poly.predict(X_test_poly)
+r2_poly = r2_score(y_test, y_poly_pred)
+
+# Гребневая полиномиальная регрессия с полиномом 3-й степени и alpha = 1.0
+ridge = Ridge(alpha=1.0)
+ridge.fit(X_poly, y_train)
+y_ridge_pred = ridge.predict(X_test_poly)
+r2_ridge = r2_score(y_test, y_ridge_pred)
+
+# Функция для отображения точек на графике
+def plot_with_labels(X, y, title, xlabel, ylabel):
+ plt.figure(figsize=(12, 6))
+ plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis', marker='.', label='Тестовые данные')
+ plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap='viridis', marker='o', edgecolors='black', linewidths=0.5, label='Обучающие данные')
+ plt.title(title)
+ plt.xlabel(xlabel)
+ plt.ylabel(ylabel)
+ plt.legend()
+ plt.show()
+
+
+# График для линейной регрессии
+plot_with_labels(X_test, y_lr_pred, 'Линейная регрессия', 'Признак 1', 'Признак 2')
+print(f'Линейная регрессия - Точность: {r2_lr:.2f}')
+
+# График для полиномиальной регрессии
+plot_with_labels(X_test, y_poly_pred, 'Полиномиальная регрессия', 'Признак 1', 'Признак 2')
+print(f'Полиномиальная регрессия - Точность: {r2_poly:.2f}')
+
+# График для гребневой полиномиальной регрессии
+plot_with_labels(X_test, y_ridge_pred, 'Гребневая полиномиальная регрессия', 'Признак 1', 'Признак 2')
+print(f'Гребневая полиномиальная регрессия - Точность: {r2_ridge:.2f}')
\ No newline at end of file