Практическая работа №26
Тема: разбивка набора данных на тренировочное и тестовое подмножества, обучение модели в Orange, сохранение модели, запуск локального API, настройка n8n и подключение к сайту.
Цель работы
Научиться загружать датасет в Orange, делать random split и stratified split, обучать модель, сохранять её, запускать локальный API через bat-файл, настраивать n8n и подключать webhook к странице сайта.
Что понадобится
- Orange Data Mining
- n8n
- Python
- датасет student_project_readiness_dataset.csv
- файлы app.py, start_api.bat, requirements.txt
Где взять датасет
Файл student_project_readiness_dataset.csv можно взять в папке с заданием или скачать на сайте преподавателя. Перед началом работы лучше положить его в отдельную папку вместе с файлами API.
Структура датасета
practice_hours_per_week
tasks_completed_percent
quiz_score
missed_classes
days_left_before_deadline
readiness_level — целевой столбец
Этап 1. Загрузка датасета в Orange
Откройте Orange и создайте новый workflow.
Добавьте виджет File.
Откройте File и выберите student_project_readiness_dataset.csv.
Проверьте, что видны все 6 столбцов и данные читаются корректно.
Этап 2. Назначение целевого столбца
Добавьте Select Columns и подключите его к File.
Откройте Select Columns.
Переместите readiness_level в область Target.
Остальные столбцы оставьте в области Features.
Этап 3. Случайное разбиение данных
Добавьте первый Data Sampler и подключите его к Select Columns.
Откройте Data Sampler.
Установите Proportion of data in the sample = 80 %.
Включите Replicable training.
Отключите Stratify sample by target variable.
Используйте Data Sample как train, а Remaining Data как test.
Этап 4. Стратифицированное разбиение данных
Добавьте второй Data Sampler и подключите его к Select Columns.
Установите Proportion of data in the sample = 80 %.
Включите Replicable training.
Включите Stratify sample by target variable.
Снова используйте Data Sample как train, а Remaining Data как test.
Этап 5. Проверка распределения классов
Добавьте Distributions к train и test в первой ветке и выберите столбец readiness_level.
Повторите то же для второй ветки.
Сравните random split и stratified split.
Сделайте вывод, какой вариант лучше сохраняет баланс классов.
Этап 6. Обучение модели
Добавьте модель Tree или Random Forest.
Подключите модель к Data Sample из стратифицированной ветки.
Добавьте Test and Score.
Подайте в Test and Score модель, train и test.
Посмотрите метрики и сделайте вывод о качестве модели.
Этап 7. Сохранение модели
Добавьте Save Model и подключите его к обученной модели.
Откройте Save Model.
Сохраните модель в ту же папку, где лежат app.py, start_api.bat и requirements.txt.
Дайте модели понятное имя, например student_readiness.model.
Этап 8. Запуск локального API
Убедитесь, что установлен Python.
В одной папке должны лежать: app.py, start_api.bat, requirements.txt и файл модели.
Дважды нажмите по start_api.bat.
В появившемся окне выберите сохранённый файл модели.
Дождитесь запуска API на адресе http://127.0.0.1:8001/.
Проверьте, что страница статуса API открывается без ошибки.
Этап 9. Настройка n8n
Откройте n8n и создайте workflow, например orange_model_gateway.
Добавьте узел Webhook.
В Webhook установите: HTTP Method = POST, Path = student-readiness, Respond = Using Respond to Webhook Node.
Добавьте узел HTTP Request после Webhook.
В HTTP Request установите: Method = POST, URL = http://127.0.0.1:8001/predict, Send Body = включить, Body Content Type = JSON.
Передайте в body поля: practice_hours_per_week, tasks_completed_percent, quiz_score, missed_classes, days_left_before_deadline.
Добавьте Respond to Webhook после HTTP Request.
В Respond to Webhook установите Respond With = JSON.
Сохраните и активируйте workflow.
Скопируйте Production URL из Webhook.
Этап 10. Подключение к сайту
Вставьте Production URL из n8n в поле URL вашей модели на этой странице.
Нажмите Сохранить адрес.
Нажмите Проверить подключение.
Если всё работает, введите свои значения признаков и нажмите Отправить в модель.
Что нужно сдать
- скрин workflow в Orange
- скрин random split
- скрин stratified split
- скрин Test and Score
- файл сохранённой модели
- скрин запуска start_api.bat
- скрин workflow в n8n
- скрин страницы сайта с успешным прогнозом
Частые ошибки
- в Select Columns не назначен
readiness_level как Target
- во втором Data Sampler не включён Stratify sample by target variable
- модель сохранена не в ту папку
- Python не установлен или не добавлен в PATH
- в n8n указан неверный URL вместо http://127.0.0.1:8001/predict
- на сайт вставлен Test URL вместо Production URL