diff --git a/gusev_vladislav_lab_1/Figure_1.png b/gusev_vladislav_lab_1/Figure_1.png new file mode 100644 index 0000000..0508fc8 Binary files /dev/null and b/gusev_vladislav_lab_1/Figure_1.png differ diff --git a/gusev_vladislav_lab_1/README.md b/gusev_vladislav_lab_1/README.md new file mode 100644 index 0000000..5876bcb --- /dev/null +++ b/gusev_vladislav_lab_1/README.md @@ -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) diff --git a/gusev_vladislav_lab_1/gusev_vladislav_lab_1.py b/gusev_vladislav_lab_1/gusev_vladislav_lab_1.py new file mode 100644 index 0000000..bacda42 --- /dev/null +++ b/gusev_vladislav_lab_1/gusev_vladislav_lab_1.py @@ -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() \ No newline at end of file