3.7 KiB
Задание
Данные: 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
Приложение развернется на локальном сервере и автоматически откроется в браузере.
Скриншоты работы программы
Построенные графики
Вывод
В первой модели, как сказано выше, данные делятся линейно. Но точность разделения близка к 1, поэтому задача в данном случае решена. В других моделях данные делятся нелинейно и чем выше кол-во нейронов, тем разбиение становится точнее. Но точность в обоих случаях одинаковая.