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:
commit
37e90b4c6c
44
kutygin_andrey_lab_1/README.md
Normal file
44
kutygin_andrey_lab_1/README.md
Normal 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
|
55
kutygin_andrey_lab_1/lab1.py
Normal file
55
kutygin_andrey_lab_1/lab1.py
Normal 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()
|
Loading…
Reference in New Issue
Block a user