diff --git a/almukhammetov_bulat_lab_1/README.md b/almukhammetov_bulat_lab_1/README.md
new file mode 100644
index 0000000..1ec1608
--- /dev/null
+++ b/almukhammetov_bulat_lab_1/README.md
@@ -0,0 +1,50 @@
+Вариант 2
+
+Задание:
+Используя код из пункта «Регуляризация и сеть прямого распространения «из [1] (стр. 228), сгенерируйте определенный тип данных и сравните на нем 3 модели (по варианту)Постройте графики, отобразите качество моделей, объясните полученные результаты.
+
+Данные:
+make_circles (noise=0.2, factor=0.5, random_state=rs) Модели: · Линейную регрессию · Полиномиальную регрессию (со степенью 3) · Гребневую полиномиальную регрессию (со степенью 3, alpha= 1.0)
+
+Запуск:
+Запустите файл lab1.py
+
+Описание программы:
+1. Генерирует набор данных с использованием функции make_circles из scikit-learn. Этот набор данных представляет собой два класса, где точки одного класса окружают точки другого класса с добавленным шумом.
+2. Разделяет данные на обучающий и тестовый наборы с помощью функции train_test_split.
+3. Создает три разные модели для классификации данных:
+4. Линейная регрессия (Logistic Regression).
+5. Полиномиальная регрессия третьей степени (Polynomial Regression).
+6. Гребневая полиномиальная регрессия третьей степени с регуляризацией и альфой равной единице (Ridge Polynomial Regression).
+7. Обучаем каждую из этих моделей на обучающем наборе данных и оцениваем их точность на тестовом наборе данных.
+8. Выводит результаты точности каждой модели.
+9. Разделение областей предсказаний моделей (границы решения).
+10. Тестовые и обучающие точки, окрашенные в соответствии с классами. (красным и синим)
+
+Результаты:
+
+
+
Точность
+
+
+
+
+
Графики регрессии
+
+
+
+
+
+
+Исходя из получивших графиков и точночсти с данным типом генерации данных из этих трех моделей наиболее точной получились полиномиальную регрессия (со степенью 3) и гребневaz полиномиальная регрессия (со степенью 3, alpha= 1.0). Они так же являются идентичными между собой. Чтобы проверить это утверждение я провел дополнительное тестирование и написал скрипт, который для 10 разных random_state (2-11) вычисляет точность для трех разных моделей.
+Результаты:
+
+Значения точности для каждой модели:
+Линейная регрессия 0.40 0.52 0.44 0.56 0.48 0.49 0.50 0.49 0.46 0.40
+Полиномиальная регрессия (со степенью 3) 0.63 0.67 0.74 0.64 0.80 0.73 0.64 0.81 0.46 0.62
+Гребневая полиномиальная регрессия (со степенью 3, alpha = 1.0) 0.63 0.67 0.74 0.64 0.80 0.73 0.64 0.81 0.46 0.62
+
+Средние значения точности:
+Линейная регрессия - Средняя точность: 0.47
+Полиномиальная регрессия (со степенью 3) - Средняя точность: 0.68
+Гребневая полиномиальная регрессия (со степенью 3, alpha = 1.0) - Средняя точность: 0.68
diff --git a/almukhammetov_bulat_lab_1/lab1.py b/almukhammetov_bulat_lab_1/lab1.py
new file mode 100644
index 0000000..6e55e7d
--- /dev/null
+++ b/almukhammetov_bulat_lab_1/lab1.py
@@ -0,0 +1,83 @@
+import numpy as np
+from matplotlib import pyplot as plt
+from matplotlib.colors import ListedColormap
+from sklearn.datasets import make_circles
+from sklearn.linear_model import LogisticRegression
+from sklearn.metrics import accuracy_score
+from sklearn.model_selection import train_test_split
+from sklearn.pipeline import make_pipeline
+from sklearn.preprocessing import PolynomialFeatures
+from sklearn.preprocessing import StandardScaler
+
+# Используя код из пункта «Регуляризация и сеть прямого распространения»из [1](стр. 228),
+# сгенерируйте определенный тип данных и сравните на нем 3 модели (по варианту).
+# Постройте графики, отобразите качество моделей, объясните полученные результаты.
+
+# Модели
+# Линейная регрессия
+# Полиномиальная регрессия (со степенью 3)
+# Гребневую полиномиальную регрессию (со степенью 3, alpha = 1.0)
+
+# Данные
+# make_circles (noise=0.2, factor=0.5, random_state=rs)
+
+random_state = np.random.RandomState(2)
+
+# Генерируем датасет
+circles_dataset = make_circles(noise=0.2, factor=0.5, random_state=random_state)
+
+X, y = circles_dataset
+X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.9, random_state=random_state)
+
+# Создаем модели
+models = []
+
+# Линейная регрессия
+linear_model = LogisticRegression(random_state=random_state)
+models.append(("Линейная регрессия", linear_model))
+
+# Полиномиальная регрессия (со степенью 3)
+poly_model = make_pipeline(PolynomialFeatures(degree=3), StandardScaler(),
+ LogisticRegression(random_state=random_state))
+models.append(("Полиномиальная регрессия (со степенью 3)", poly_model))
+
+# Гребневая полиномиальная регрессия (со степенью 3 и alpha=1.0)
+ridge_poly_model = make_pipeline(PolynomialFeatures(degree=3), StandardScaler(),
+ LogisticRegression(penalty='l2', C=1.0, random_state=random_state))
+models.append(("Гребневая полиномиальная регрессия (со степенью 3, alpha = 1.0)", ridge_poly_model))
+
+# Обучаем и оцениваем модели
+results = []
+
+for name, model in models:
+ model.fit(X_train, y_train) # обучаем
+ y_pred = model.predict(X_test) # предсказываем
+ accuracy = accuracy_score(y_test, y_pred) # определяем точность
+ results.append((name, accuracy))
+
+# Выводим результаты
+for name, accuracy in results:
+ print(f"{name} - Точность: {accuracy:.2f}")
+
+# Строим графики
+cmap_background = ListedColormap(['#FFAAAA', '#AAAAFF'])
+cmap_points = ListedColormap(['#FF0000', '#0000FF'])
+
+plt.figure(figsize=(15, 5))
+for i, (name, model) in enumerate(models):
+ plt.subplot(1, 3, i + 1)
+ xx, yy = np.meshgrid(np.linspace(X[:, 0].min() - 1, X[:, 0].max() + 1, 100),
+ np.linspace(X[:, 1].min() - 1, X[:, 1].max() + 1, 100))
+ Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
+ Z = Z.reshape(xx.shape)
+ plt.contourf(xx, yy, Z, cmap=cmap_background, alpha=0.5)
+ plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=cmap_points, marker='o', label='Тестовые точки')
+ plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cmap_points, marker='x', label='Обучающие точки')
+ plt.legend()
+ plt.title(name)
+
+ plt.text(0.5, -1.2, 'Красный класс', color='r', fontsize=12)
+ plt.text(0.5, -1.7, 'Синий класс', color='b', fontsize=12)
+
+plt.tight_layout()
+plt.show()
diff --git a/almukhammetov_bulat_lab_1/Рисунок1.png b/almukhammetov_bulat_lab_1/Рисунок1.png
new file mode 100644
index 0000000..07611df
Binary files /dev/null and b/almukhammetov_bulat_lab_1/Рисунок1.png differ
diff --git a/almukhammetov_bulat_lab_1/Рисунок2.png b/almukhammetov_bulat_lab_1/Рисунок2.png
new file mode 100644
index 0000000..b72d561
Binary files /dev/null and b/almukhammetov_bulat_lab_1/Рисунок2.png differ
diff --git a/almukhammetov_bulat_lab_1/Рисунок3.png b/almukhammetov_bulat_lab_1/Рисунок3.png
new file mode 100644
index 0000000..81ac962
Binary files /dev/null and b/almukhammetov_bulat_lab_1/Рисунок3.png differ
diff --git a/almukhammetov_bulat_lab_1/Рисунок4.png b/almukhammetov_bulat_lab_1/Рисунок4.png
new file mode 100644
index 0000000..751f14b
Binary files /dev/null and b/almukhammetov_bulat_lab_1/Рисунок4.png differ