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:
Alexey 2023-10-08 13:45:05 +04:00
commit d0fbf61dc0
3 changed files with 83 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

View 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)

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