From 294764b582795f7f6bb55e292faa6c58454f08a3 Mon Sep 17 00:00:00 2001 From: UrOldFriendSoul Date: Mon, 13 Nov 2023 20:28:24 +0400 Subject: [PATCH] kutygin_lab_1_ready --- kutygin_andrey_lab_1/README.md | 44 +++++++++++++++++++++++++++ kutygin_andrey_lab_1/lab1.py | 55 ++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 kutygin_andrey_lab_1/README.md create mode 100644 kutygin_andrey_lab_1/lab1.py diff --git a/kutygin_andrey_lab_1/README.md b/kutygin_andrey_lab_1/README.md new file mode 100644 index 0000000..9205506 --- /dev/null +++ b/kutygin_andrey_lab_1/README.md @@ -0,0 +1,44 @@ +**Задание** +*** + +Вариант 16 + +***Данные:*** make_moons (noise=0.3, random_state=rs) + +***Модели:*** + +· Линейную регрессию + +· Многослойный персептрон с 10-ю нейронами в скрытом слое (alpha = 0.01) + +· Персептрон + +***Как запустить лабораторную:*** +*** +Запустить файл lab1.py + +***Используемые технологии*** +*** +Библиотеки numpy, matplotlib, sklearn и их компоненты + +***Описание лабораторной (программы)*** +*** +Реализация использования NumPy, Matplotlib и scikit-learn в данном коде позволяет создавать и обучать модели машинного обучения на наборе данных make_moons. + +Первым шагом является генерация набора данных make_moons, которая представляет собой двумерный набор точек, распределенных в форме двух связных полумесяцев. Это набор данных, используемый для задачи классификации. + +Затем модели линейной регрессии, многослойного персептрона и персептрона обучаются на этом наборе данных. В процессе обучения модели адаптируют свои внутренние параметры для предсказания целевых значений. + +После обучения моделей создается сетка точек, чтобы предсказать значения моделей на этой сетке. Это позволяет визуализировать, как модели классифицируют пространство точек. + +В конце кода данные и предсказания моделей визуализируются на графиках. Это позволяет сравнить и оценить, насколько хорошо каждая модель справляется с задачей классификации и как они различаются друг от друга. + +***Результат*** +*** +В результате программа выводит графики и оценки производительности обучения, полученные через model.score библиотеки sclearn. + +Линейная регрессия: 0.5453845246295626 + +Многослойный персептрон: 0.10895145407108087 + +Персептрон: 0.5 diff --git a/kutygin_andrey_lab_1/lab1.py b/kutygin_andrey_lab_1/lab1.py new file mode 100644 index 0000000..78b7018 --- /dev/null +++ b/kutygin_andrey_lab_1/lab1.py @@ -0,0 +1,55 @@ +import numpy as np +import matplotlib.pyplot as plt +from sklearn.datasets import make_moons +from sklearn.linear_model import LinearRegression +from sklearn.neural_network import MLPClassifier, MLPRegressor +from sklearn.metrics import accuracy_score, mean_squared_error + + +X, y = make_moons(noise=0.3, random_state=42) + +# Линейная регрессия +lr = LinearRegression() +lr.fit(X, y) + +# Многослойный персептрон +mlp = MLPRegressor(hidden_layer_sizes=(10,), alpha=0.01, random_state=42) +mlp.fit(X, y) + +# Персептрон +perceptron = MLPClassifier(hidden_layer_sizes=(1,), random_state=42) +perceptron.fit(X, y) + +# Создаем сетку точек для предсказания моделей +xx, yy = np.meshgrid(np.linspace(-2, 3, 1000), np.linspace(-2, 2, 1000)) +Z_lr = lr.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape) +Z_mlp = mlp.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape) +Z_perceptron = perceptron.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape) + +# Отображаем данные и предсказания моделей +plt.figure(figsize=(18, 6)) + +# График линейной регрессии +plt.subplot(1, 3, 1) +plt.contourf(xx, yy, Z_lr, cmap=plt.cm.RdBu, alpha=0.8) +plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.RdBu, edgecolors='k') +plt.title("Линейная регрессия") + +# График многослойного персептрона +plt.subplot(1, 3, 2) +plt.contourf(xx, yy, Z_mlp, cmap=plt.cm.RdBu, alpha=0.8) +plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.RdBu, edgecolors='k') +plt.title("Многослойный персептрон") + +# График персептрона +plt.subplot(1, 3, 3) +plt.contourf(xx, yy, Z_perceptron, cmap=plt.cm.RdBu, alpha=0.8) +plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.RdBu, edgecolors='k') +plt.title("Персептрон") + +print("Линейная регрессия:", lr.score(X, y)) +print("Многослойный персептрон:", mlp.score(X, y)) +print("Персептрон:", perceptron.score(X, y)) + +# Показываем графики +plt.show() \ No newline at end of file -- 2.25.1