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