diff --git a/shadaev_anton_lab_1/README.md b/shadaev_anton_lab_1/README.md new file mode 100644 index 0000000..cf81b0d --- /dev/null +++ b/shadaev_anton_lab_1/README.md @@ -0,0 +1,48 @@ +# IIS_2023_1 +

Задание

+

+Используя код из пункта «Регуляризация и сеть прямого +распространения» из [1] (стр. 228), сгенерируйте определенный тип данных и +сравните на нем 3 модели (по варианту). Постройте графики, отобразите +качество моделей, объясните полученные результаты. +

+

+9. Данные: make_classification (n_samples=500, n_features=2, +n_redundant=0, n_informative=2, random_state=rs, n_clusters_per_class=1) +Модели: +- Персептрон +· Многослойный персептрон с 10-ю нейронами в скрытом слое (alpha = +0.01) +· Многослойный персептрон со 100-а нейронами в скрытом слое (alpha += 0.01) +

+

Способок запуска программы

+

Выполнить скрипт shadaev_anton_lab_1/main.py (перед этим установить импортированные библиотеки) после которого будут нарисованы 3 графика

+

Стек технологий

+

+

+

+

Описание кода

+

+

    +
  1. Импортирование необходимых библиотек
  2. +
  3. Создание искусственных данных с помощью функции make_classification() из sklearn. Данные состоят из 500 образцов.
  4. +
  5. Данные разделяются на обучающие и тестовые наборы данных с использованием функции train_test_split().
  6. +
  7. Создается список моделей для обучения (Перцептрон и многослойные перцептроны).
  8. +
  9. Выполняется обучение для каждой модели, предсказание на тестовых данных и вычисление точности предсказания.
  10. +
  11. Строится кривая обучения для каждой модели и кросс-валидации с использованием функции learning_curve() из sklearn. Данная функция позволяет визуализировать, как производительность модели изменяется в зависимости от количества обучающих примеров.
  12. +
  13. Наконец, plt.show() отображает все графики.
  14. +
+
Полученные графики
+Графики показывают производительность моделей при обучении на разных размерах обучающего набора данных. + + +

diff --git a/shadaev_anton_lab_1/lab_1.txt b/shadaev_anton_lab_1/lab_1.txt deleted file mode 100644 index 345e6ae..0000000 --- a/shadaev_anton_lab_1/lab_1.txt +++ /dev/null @@ -1 +0,0 @@ -Test diff --git a/shadaev_anton_lab_1/main.py b/shadaev_anton_lab_1/main.py new file mode 100644 index 0000000..9c4343d --- /dev/null +++ b/shadaev_anton_lab_1/main.py @@ -0,0 +1,45 @@ +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, learning_curve +from sklearn.metrics import accuracy_score + +# Наполнение искусственными данными +rs = np.random.RandomState(42) +X, y = make_classification(n_samples=500, n_features=2, n_redundant=0, n_informative=2, random_state=rs, + n_clusters_per_class=1) + +# Обучающие и тестовые наборы данных +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=rs) + +# Список моделей для обучения +models = [ + ('Персептрон', Perceptron()), + ('MLP (10 нейронов)', MLPClassifier(hidden_layer_sizes=(10,), alpha=0.01, random_state=rs)), + ('MLP (100 нейронов)', MLPClassifier(hidden_layer_sizes=(100,), alpha=0.01, random_state=rs)) +] + +fig, axs = plt.subplots(1, len(models), figsize=(12, 4)) + +# Визуализация графиков +for i, (name, model) in enumerate(models): + model.fit(X_train, y_train) + y_pred = model.predict(X_test) + accuracy = accuracy_score(y_test, y_pred) + + # Построение кривых обуч ения + train_sizes, train_scores, valid_scores = learning_curve( + model, X, y, train_sizes=[50, 80, 110], cv=5) + axs[i].plot(train_sizes, train_scores.mean(axis=1), 'o-', color="r", + label="Оценка обучения") + axs[i].plot(train_sizes, valid_scores.mean(axis=1), 'o-', color="g", + label="Оценка кросс-валидации") + axs[i].set_title(f'{name} (Точность: {accuracy:.2f})') + axs[i].set_xlabel("Training examples") + axs[i].set_ylabel("Score") + axs[i].legend(loc="best") + axs[i].grid() + +plt.show() diff --git a/shadaev_anton_lab_1/myplot.png b/shadaev_anton_lab_1/myplot.png new file mode 100644 index 0000000..b56a111 Binary files /dev/null and b/shadaev_anton_lab_1/myplot.png differ