Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛБ#2 / СИИ_МУ_ЛР#2.docx
Скачиваний:
0
Добавлен:
19.10.2026
Размер:
266 Кб
Скачать
☆

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

Московский технический университет связи и информатики

Кафедра технологии построения сетевой инфраструктуры

Методические указания к выполнению лабораторных работ в рамках курса «Системы искусственного интеллекта»

Лабораторная работа №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()

Соседние файлы в папке ЛБ#2