## Задание Данные: 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](win_start.jpg "Optional Title") Построенные графики ![Alt text](1graf.jpg "Optional Title") ![Alt text](2graf.jpg "Optional Title") ![Alt text](3graf.jpg "Optional Title") ## Вывод В первой модели, как сказано выше, данные делятся линейно. Но точность разделения близка к 1, поэтому задача в данном случае решена. В других моделях данные делятся нелинейно и чем выше кол-во нейронов, тем разбиение становится точнее. Но точность в обоих случаях одинаковая.