Merge pull request 'gusev_vladislav_lab_1 is ready' (#19) from gusev_vladislav_lab_1 into main
Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/19
This commit is contained in:
commit
d0fbf61dc0
BIN
gusev_vladislav_lab_1/Figure_1.png
Normal file
BIN
gusev_vladislav_lab_1/Figure_1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 63 KiB |
28
gusev_vladislav_lab_1/README.md
Normal file
28
gusev_vladislav_lab_1/README.md
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
### Вариант 9
|
||||||
|
### Задание на лабораторную работу:
|
||||||
|
По данным, построить графики 3 моделей:
|
||||||
|
- Персептрон
|
||||||
|
- Многослойный персептрон с 10-ю нейронами в скрытом слое (alpha = 0.01)
|
||||||
|
- Многослойный персептрон с 100-а нейронами в скрытом слое (alpha = 0.01)
|
||||||
|
|
||||||
|
Данные: make_classification (n_samples=500, n_features=2, n_redundant=0, n_informative=2, random_state=rs, n_clusters_per_class=1)
|
||||||
|
|
||||||
|
### Как запустить лабораторную работу:
|
||||||
|
Выполняем файл gusev_vladislav_lab_1.py, на экране будет нарисовано 3 графика
|
||||||
|
|
||||||
|
### Технологии
|
||||||
|
NumPy - библиотека для работы с многомерными массивами. Mathplotlib - библиотека для визуализации данных двумерной и трехмерной графикой. Sklearn - библиотека с большим количеством алгоритмов машинного обучения.
|
||||||
|
|
||||||
|
### По коду
|
||||||
|
Используем функцию make_classification, чтобы сгенерировать 500 примеров с 2 признаками. Дополнительные параметры определяют характеристики данных, такие как количество информативных признаков и случайное распределение классов.
|
||||||
|
|
||||||
|
С помощью train_test_split разделяем данные на обучающую и тестовую выборки в соотношении 70% к 30%.
|
||||||
|
|
||||||
|
Далее создаются 3 модели: персептрон, многослойный персептрон с 10 нейронами в скрытом слое и многослойный персептрон с 100 нейронами в скрытом слое.Модели обучаются на обучающих данных с использованием метода fit.
|
||||||
|
|
||||||
|
Обученные модели используются для предсказания классов на тестовых данных с помощью метода predict.
|
||||||
|
Затем с помощью accuracy_score оцениваем точности предсказаний моделей на тестовом наборе данных.
|
||||||
|
|
||||||
|
Далее создаем графики для каждой модели, где каждая точка данных отображается на графике с цветом, соответствующим предсказанному классу. В заголовках написана точность для каждой модели. Отображаем графики с помощью plt.show().
|
||||||
|
|
||||||
|
Полученные графики: ![Figure_1.png](Figure_1.png)
|
55
gusev_vladislav_lab_1/gusev_vladislav_lab_1.py
Normal file
55
gusev_vladislav_lab_1/gusev_vladislav_lab_1.py
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
import numpy as np
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
from sklearn.datasets import make_classification
|
||||||
|
from sklearn.linear_model import Perceptron
|
||||||
|
from sklearn.neural_network import MLPClassifier
|
||||||
|
from sklearn.model_selection import train_test_split
|
||||||
|
from sklearn.metrics import accuracy_score
|
||||||
|
|
||||||
|
# Создание искусственных данных
|
||||||
|
rs = np.random.RandomState(42)
|
||||||
|
#n_samples - число примеров, n_features - признаки, n_redindant - лишние признаки, n_informative - информативные признаки
|
||||||
|
#random_state - rs для воспроизводимости данных, n_clusters_per_class - 1 кластер классов
|
||||||
|
X, y = make_classification(n_samples=500, n_features=2, n_redundant=0, n_informative=2, random_state=rs, n_clusters_per_class=1)
|
||||||
|
|
||||||
|
# Разделение данных на обучающий и тестовый наборы
|
||||||
|
#test_size=0.3 - 30% тестов
|
||||||
|
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=rs)
|
||||||
|
|
||||||
|
# Модель персептрона
|
||||||
|
perceptron = Perceptron()
|
||||||
|
perceptron.fit(X_train, y_train)
|
||||||
|
y_pred_perceptron = perceptron.predict(X_test)
|
||||||
|
accuracy_perceptron = accuracy_score(y_test, y_pred_perceptron)
|
||||||
|
|
||||||
|
# Модель многослойного персептрона с 10 нейронами
|
||||||
|
mlp_10 = MLPClassifier(hidden_layer_sizes=(10,), alpha=0.01, random_state=rs)
|
||||||
|
mlp_10.fit(X_train, y_train)
|
||||||
|
y_pred_mlp_10 = mlp_10.predict(X_test)
|
||||||
|
accuracy_mlp_10 = accuracy_score(y_test, y_pred_mlp_10)
|
||||||
|
|
||||||
|
# Модель многослойного персептрона с 100 нейронами
|
||||||
|
mlp_100 = MLPClassifier(hidden_layer_sizes=(100,), alpha=0.01, random_state=rs)
|
||||||
|
mlp_100.fit(X_train, y_train)
|
||||||
|
y_pred_mlp_100 = mlp_100.predict(X_test)
|
||||||
|
accuracy_mlp_100 = accuracy_score(y_test, y_pred_mlp_100)
|
||||||
|
|
||||||
|
# Визуализация данных
|
||||||
|
plt.figure(figsize=(12, 4))
|
||||||
|
|
||||||
|
# Персептрон
|
||||||
|
plt.subplot(131)
|
||||||
|
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred_perceptron, cmap=plt.cm.Paired)
|
||||||
|
plt.title(f'Персептрон (Точность: {accuracy_perceptron:.2f})')
|
||||||
|
|
||||||
|
# Многослойный персептрон с 10 нейронами
|
||||||
|
plt.subplot(132)
|
||||||
|
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred_mlp_10, cmap=plt.cm.Paired)
|
||||||
|
plt.title(f'MLP (10 нейронов) (Точность: {accuracy_mlp_10:.2f})')
|
||||||
|
|
||||||
|
# Многослойный персептрон с 100 нейронами
|
||||||
|
plt.subplot(133)
|
||||||
|
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred_mlp_100, cmap=plt.cm.Paired)
|
||||||
|
plt.title(f'MLP (100 нейронов) (Точность: {accuracy_mlp_100:.2f})')
|
||||||
|
|
||||||
|
plt.show()
|
Loading…
Reference in New Issue
Block a user