Merge pull request 'kutygin_lab_1_ready' (#149) from kutygin_andrey_lab_1 into main

Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/149
This commit is contained in:
Alexey 2023-12-05 22:44:56 +04:00
commit 37e90b4c6c
2 changed files with 99 additions and 0 deletions

View File

@ -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

View File

@ -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()