МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Факультет Информационных технологий и программной инженерии
Кафедра Систем обработки данных
Направление: 09.03.02 Информационные системы и технологии
Профиль: Прикладные информационные системы и технологии
Лабораторная работа №4
«Реализация жизненного цикла интеллектуальных систем в информационной среде их сопровождения»
по дисциплине
«Интеллектуальные системы и технологии»
Выполнил:
студент группы ИСТ-223
Хакова Ю.М. «____» _________2026 г.
Принял:
ассистент кафедры ИУС
Пелих Д.А. «____» _________2026 г.
Цель работы:
Разработка базы знаний и модели машинного обучения для прогнозирования назначения стипендии студентам на основе их академических достижений и внеучебной активности.
Задачи
1. Необходимо изучить основы логического программирования на языке Prolog и ознакомиться с функциональными возможностями системы SWI-Prolog.
2. Создать свою собственную обучаемую модель для определения наличия стипендии у студентов. Изначальными данными являются средние баллы студентов и наличие/отсутствие стипендии. При помощи этих входных данных будет осуществляться создание, обучение и тестирование модели дерева решений.
Ход работы
В ходе выполнения лабораторной работы были изучены основные функции пункта меню File в среде SWI-Prolog (Рисунок 1).
Меню File содержит следующие команды:
Consult — используется для загрузки файла с базой знаний (например, .pl). Позволяет подключить созданный файл к системе Prolog для дальнейшей работы с ним.
Edit — открывает выбранный файл базы знаний для редактирования. Удобно для внесения изменений в факты и правила.
New — позволяет создать новый файл с базой знаний.
Reload modified files — выполняет повторную загрузку изменённых файлов без необходимости их повторного открытия вручную.
Close — закрывает текущий файл или окно.
Halt prolog — завершает работу среды SWI-Prolog.
Рисунок 1 – Функциональные кнопки пункта навигационного меню «File»
Создание базы знаний, содержащую информацию о возможности получения стипендии и трудоустройства студентов (Рисунок 2).
Рисунок 2 – База знаний студентов в Prolog
После загрузки базы знаний в среду SWI-Prolog были выполнены запросы для проверки получения стипендии студентами и возможности их трудоустройства (Рисунок 3).
В результате были получены следующие ответы:
запрос stipendiya('Popov'). вернул значение true, следовательно, студент Попов получает стипендию;
запрос stipendiya('Ivanov'). вернул значение true, следовательно, студент Иванов также получает стипендию;
запрос isAbleToWork('Popov', X). показал, что студент Попов может трудоустроиться в компанию IBM.
Полученные результаты подтверждают корректность работы созданной базы знаний и логических правил. Система SWI-Prolog успешно обрабатывает факты и правила, а также позволяет формировать запросы для получения нужной информации о студентах.
Рисунок 3 – Выполнение запросов к базе знаний
Практическая часть II
Подключаем нужные для работы библиотеки и инициализируем датафрейм для обучнения и тестирования модели. Он содержит данные о студентах (средний балл и наличие стипендии) (Рисунок 4).
Рисунок 4 – Исходные данные о студентах для обучения модели
Разделение данных на признаки и целевую переменную (Рисунок 5).
X — это переменная, которая содержит признаки. Признаки — это данные, которые модель будет использовать для обучения. В данном случае у нас только один признак — 'Средний_балл'.
y — это переменная, которая содержит целевую переменную. Целевая переменная — это то, что модель пытается предсказать. В данном случае это 'Стипендия' (1 — стипендия есть, 0 — стипендии нет).
Рисунок 5 – Разделение данных на признаки и целевую переменную
Мы разделяем данные на две части:
Обучающая выборка (X_train, y_train): данные, на которых модель будет обучаться. Она пытается найти закономерности между признаками (X_train) и целевой переменной (y_train). Например, модель может заметить, что если Средний_балл >= 4, то стипендия обычно есть.
Тестовая выборка (X_test, y_test): данные, на которых модель будет проверяться после обучения. Мы используем признаки (X_test), чтобы модель сделала предсказания, а затем сравниваем их с реальными значениями (y_test). Это помогает понять, насколько хорошо модель обобщает данные и может ли она правильно предсказывать на новых данных, которые она раньше не видела.
test_size=0.2 означает, что 20% данных будут использоваться для тестирования, а 80% — для обучения.
random_state=42 задает начальное значение для генератора случайных чисел. Это нужно для того, чтобы результаты были воспроизводимыми.
Далее создаем модель в коде.
DecisionTreeClassifier() — это конструктор класса, который создает объект модели дерева решений. Пока модель "пустая" — она еще не обучена.
model.fit(X_train, y_train) — это метод, который обучает модель на данных.
