МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
Московский технический университет связи и информатики
Кафедра технологии построения сетевой инфраструктуры
Методические указания к выполнению лабораторных работ в рамках курса «Системы искусственного интеллекта»
Лабораторная работа №2
«Алгоритмы машинного обучения»
Москва, 2026 г.
Лабораторная 2. Алгоритмы машинного обучения
Алгоритмы машинного обучения нужны для обработки больших объёмов данных и извлечения из них данных. Для получения аналитической зависимости и составления уравнений понадобиться слишком много времени, так как системы, которые требуется моделировать, достаточно сложные, отсюда и получается необходимость применения машинного обучения.
Алгоритмы имеют большую область применения: биология, финансовые сервисы, распознавание изображений, обработка звука и изображения.
Рисунок 1. Упрощенный алгоритм машинного обучения
Для работы вначале необходимо некоторое исследование данных, с целью выбора метода обучения модели. Для этого могут подойти как базовые инструменты, так и статистические, например, для оценки корреляции. Далее, следует выбрать модель: регрессии, классификации или кластеризации. Как правило, разные модели дают разные результаты. После этого необходимо провести обучение модели на заранее подготовленных примерах, чтобы у модели было базовое понятие о прогнозируемой информации. Затем, полученную и натренированную модель можно использовать для прогнозов.
Пример
Оценка энергоэффективности зданий. Необходимо определить по входным данным потребности зданий в нагреве и охлаждении. Эта задача относится к задаче классификации. В качестве входных данных используются: площади поверхности, площади стен, крыш, расположение окон, их распределение и т.д. и в качестве выходных параметров, которые мы хотим определить: нагрузка по отоплению и охлаждению. В дальнейшем после построении модели данные, которые не участвовали в обучении, нужно будет использовать для задачи классификации.
Постановка задачи
Используя Python, по имеющимся данным определить потребности зданий в нагреве (и в охлаждении) и классифицировать их в зависимости от спрогнозированной потребности.
Датасет
Дан каталог, содержащий в себе численные характеристики различных моделей жилых помещений. Здания различаются по следующим параметрам ( X – непосредственно характеристики, Y – вытекающие из них потребности, которые требуется прогнозировать):
Х1 Относительной компактности
Х2 Площади поверхности
Х3 Площади стен
Х4 Площади крыши
Х5 Высоте стен
Х6 Ориентации
Х7 Площади остекления
Х8 Распределению площади остекления
Y1 Потребности в нагреве
Y2 Потребности в охлаждении
В качестве начальных данных были использованы данные с Интернет-источника: archive.ics.uci.edu/ml/datasets/Energy+efficiency.
Входные данные доступны в средствах Exсel.
Практическая часть
Для начала создаем virtual environment:
Открываем консоль (cmd для Windows) и переходим в папку, в которой будем выполнять лабораторные работы
python -m venv venv
venv\Scripts\activate
pip install -r req.txt
Далее создаем файл, в котором будет выполняться ЛР.
Импортируем библиотеки:
import numpy as np # Модуль с «более продвинутой математикой»
import pandas # Модуль, с помощью которого мы прочитаем csv
import matplotlib.pyplot as plt # Модуль работы с графиками
# sklearn – библиотека для машинного обучения, из которой нам понадобятся
# Функция разделения выборки на обучающую и тестовую
from sklearn.model_selection import train_test_split
# Наивный байесовский классификатор
from sklearn.naive_bayes import GaussianNB
# Метод, используемый для построения графика точности
from sklearn.metrics import confusion_matrix
# Дерево решений
from sklearn.tree import DecisionTreeRegressor
# Метод, с помощью которого мы будем визуализировать дерево
from sklearn import tree
# Нейронная сеть
from sklearn.neural_network import MLPRegressor
# Функция подсчета точности модели
from sklearn.metrics import accuracy_score
Напишем функцию, благодаря которой будут построены графики для большинства пунктов нашей лабораторной работы:
def visualize(y_test, y_pred, model_name):
# Альтернативный способ подсчета точности модели
pernb_1 = 100 * (sum(abs(y_test - y_pred) <= 1)) / len(y_test)
accuracy = round(pernb_1,2)
# Выведем на экран точность модели
print(f'{model_name} % within 1 unit (accuracy): {accuracy}%')
# Построение Confusion Matrix
C = confusion_matrix(y_test, y_pred)
C_perc, res, rank, s = np.linalg.lstsq(np.diag(sum(C, 2)), C, rcond=None)
# Укажем названия осей и название графика
plt.ylabel('Outputs')
plt.xlabel('Outputs')
plt.title(
f'How many responses were correctly predicted wihin 1 (accuracy): {accuracy}%')
# Отрисуем график
plt.imshow(C_perc)
plt.colorbar()
plt.show()
