IIS_2023_1/gordeeva_anna_lab_1/readme.md
2023-09-21 23:07:09 +04:00

3.7 KiB
Raw Blame History

Задание

Данные: make_moons (noise = 0.3, random_state = 0)

Модели:

  • Персептрон
  • Многослойный персептрон с 10-ю нейронами в скрытом поле (alpha = 0.01)
  • Многослойный персептрон с 100-а нейронами в скрытом поле (alpha = 0.01)

В чем различие каждой модели

Персептрон:

  • самая простая форма искусственной нейронной сети
  • состоит из одного или нескольких нейронов
  • только один слой нейронов
  • разделяет данные линейно

Многослойный персептрон с 10-ю/100-а нейронами в скрытом поле (alpha = 0.01)

  • более сложная форма искусственной нейронной сети
  • состоит из нескольких слоев, причем имеет один или несколько скрытых слоев
  • способен решать задачи классификации, регрессии, обработки изображений, текста и т.д

Общий вывод таков, что многослойный персептрон способен решать более сложные задачи, требующие нелинейных решений.

Библиотеки

Streamlit. Предоставляет простой способ создания веб-приложений для визуализации данных.

Numpy. Предоставляет возможность работать с массивами и матрицами.

Matplotlib. Используется для создания графиков.

Sklearn. Предоставляет инструменты и алгоритмы, которые упрощают задачи, связанные с машинным обучением.

Функционал

Предоставляет создание объекта для каждой модели персептрона.

Создание данных с помощью функции make_moon c последующим делением данных на обучающую и тестовую выборку.

Метод print_perceptron, в котором происходит обучение модели, определение точности и отрисовка графика.

Запуск

Перед запуском необходимо запустить виртуальную среду venv. Так как я использую streamlit, то для запуска необходимо в терминал прописать следующую строку:

streamlit run lab1.py

Приложение развернется на локальном сервере и автоматически откроется в браузере.

Скриншоты работы программы

При запуске выглядит так: Alt text

Построенные графики

Alt text

Alt text

Alt text

Вывод

В первой модели, как сказано выше, данные делятся линейно. Но точность разделения близка к 1, поэтому задача в данном случае решена. В других моделях данные делятся нелинейно и чем выше кол-во нейронов, тем разбиение становится точнее. Но точность в обоих случаях одинаковая.