- •Лабораторная работа №1
- •Загрузка, инициализация и анализ данных
- •Подготовка временных меток
- •Построение автокорреляционной функции (АКФ)
- •Блок построения временных трендов с усреднением по 7 и 365 дней по колонке 'Consumption'
- •Формирование функции вычисления точности прогнозной модели
- •Реализации алгоритмов машинного обучения
- •Корректировки стационарности временного ряда, улучшение точности прогнозирования
- •Блок корректировки стационарности временного ряда
- •Функция генерирования дополнительных временных признаком
- •Лаборатоное задание
- •Лабораторная работа №2
- •Решение задач классификации машинного обучения
- •Теоретические сведения
- •Практическая часть
- •Лабораторная работа №3
- •«Создание баз знаний в Visual Prolog»
- •Задание на лабораторную работу:
- •Решение.
- •Результат:
- •Лабораторная работа №4
- •Пример сети распознавания цифры с помощью библиотеки Keras
- •Лабораторное задание
МИНОБРНАУКИ РОССИИ Федеральное государственное бюджетное образовательное учреждение высшего образования
«Нижегородский государственный архитектурно-строительный университет»
Д. И. Кислицын
Системы искусственного интеллекта
Учебно-методическое пособие
по выполнению лабораторных работ для обучающихся по дисциплине «Системы искусственного интеллекта»
по направлению подготовки 09.04.02 Информационные системы и технологии, профиль «Искусственный интеллект в системах и сетях передачи данных»
Нижний Новгород
2022
МИНОБРНАУКИ РОССИИ Федеральное государственное бюджетное образовательное учреждение высшего образования
«Нижегородский государственный архитектурно-строительный университет»
Д. И. Кислицын
Системы искусственного интеллекта
Учебно-методическое пособие
по выполнению лабораторных работ для обучающихся по дисциплине «Системы искусственного интеллекта»
по направлению подготовки 09.04.02 Информационные системы и технологии, профиль «Искусственный интеллект в системах и сетях передачи данных»
Нижний Новгород ННГАСУ
2022
2
УДК 681.3 (075)
Кислицын Д. И. Системы искусственного интеллекта : учебно-методическое пособие / Д. И. Кислицын; Нижегородский государственный архитектурно-строительный университет. – Нижний Новгород : ННГАСУ, 2022. - 46 с. - Текст : электронный.
Предназначено для обучающихся в ННГАСУ по дисциплине «Системы искусственного интеллекта» по направлению подготовки 09.04.02 Информационные системы и технологии, профиль «Искусственный интеллект в системах и сетях передачи данных».
Д. И. Кислицын, 2022ННГАСУ, 2022
3
Содержание
Лабораторная работа №1……….……………………….………………………5 Лабораторная работа №2………………………………………………………26 Лабораторная работа №3………………………………………………………32 Лабораторная работа №4………………………………………………………38
4
Лабораторная работа №1
Прогнозирование временных рядов (регресионные машиного обучения)
Прогнозирование временных рядов означает продолжение данных прошлых периодов в будущее, где эти значения еще не доступны. Прогнозирование обычно выполняется для оптимизации таких областей как уровень товарных запасов, производственных мощностей и количества персонала.
Вопределении временных рядов есть две основные структурные переменные:
Период, который представляет уровень обобщения. Наиболее часто используемыми периодами являются: месяц, неделя, день в цепях поставок (для оптимизации товарных запасов). Колл-центры обычно ориентируются на период в 15 минут (для оптимизации количества персонала).
Горизонт, который представляет количество периодов в будущем, на которое необходим прогноз. В цепях поставок горизонт обычно равен или превышает срок поставки. Данная лабораторная работа посвящена прогнозрованию энергопотребления по данным, собранным за 11 лет. Тренировочная выборка состоит из 10 лет, тестовая из одного года.
Загрузка, инициализация и анализ данных
#Команда импорта сторонних библиотек (import 'название библиотеки' as 'сокращенное название')
import pandas as pd import seaborn as sns
import matplotlib.pyplot as plt
#Ссылка на датасет
url='https://raw.githubusercontent.com/jenfly/opsd/master/opsd_germany_daily. csv'
# Операция присваивания переменной data датафрейма (дф), который формируется на основе датасета
data = pd.read_csv(url, sep=",")
data # Вывод полученного дф (рабоатет только в интерактивных блокнотаз
(colab, jupiter))
|
Date |
Consumption |
Wind |
Solar |
Wind+Solar |
0 |
2006-01-01 |
1069.18400 |
NaN |
NaN |
NaN |
1 |
2006-01-02 |
1380.52100 |
NaN |
NaN |
NaN |
2 |
2006-01-03 |
1442.53300 |
NaN |
NaN |
NaN |
3 |
2006-01-04 |
1457.21700 |
NaN |
NaN |
NaN |
4 |
2006-01-05 |
1477.13100 |
NaN |
NaN |
NaN |
... |
... |
... |
... |
... |
... |
4378 |
2017-12-27 |
1263.94091 |
394.507 |
16.530 |
411.037 |
5
4379 |
2017-12-28 |
1299.86398 |
506.424 |
14.162 |
520.586 |
4380 |
2017-12-29 |
1295.08753 |
584.277 |
29.854 |
614.131 |
4381 |
2017-12-30 |
1215.44897 |
721.247 |
7.467 |
728.714 |
4382 |
2017-12-31 |
1107.11488 |
721.176 |
19.980 |
741.156 |
[4383 rows x 5 columns]
Базовые библиотеки, которые могут использоваться при машинном обучении и анализе данных:
1.Pandas - Хранение, обработка и анализ датасетов (табличный формат, временые ряды)
2.Numpy - Хранение, обработка и анализ датасетов (многомерные массивы)
3.Sklearn - Библиотека машинного обуения
4.SciPy - Библиотека научных и инженерных рассчетов
5.Seaborn - Библиотека визуализации (построение графиков), основана на библ. matplotlib
6.Matplotlib - Библиотека визуализации
Графическая демонтрация всего обрабатываемого датасета атрибуты функции x_vars - значения оси абсцисс, data - датасет, height - высота графика (inch),aspect - длина графика
sns.pairplot(x_vars=['Date'], data = data, height=5, aspect=20) <seaborn.axisgrid.PairGrid at 0x7f54d311cf10>
sns.pairplot(data = data) # Матрица рассеяния (перекрестный анализ)
<seaborn.axisgrid.PairGrid at 0x7f54c890fd50>
6
Подготовка временных меток
data['time'] = str('01:00:00') # Добавление временной составляющей data['Date'] = pd.to_datetime(data['Date'].astype(str) + ' ' + data['time'].astype(str), format='%Y-%m-%d %H:%M:%S') # Формирование формата времени с датой
data
|
|
Date |
Consumption |
Wind |
Solar |
Wind+Solar |
time |
0 |
2006-01-01 01:00:00 |
1069.18400 |
NaN |
NaN |
NaN |
01:00:00 |
|
1 |
2006-01-02 |
01:00:00 |
1380.52100 |
NaN |
NaN |
NaN |
01:00:00 |
2 |
2006-01-03 |
01:00:00 |
1442.53300 |
NaN |
NaN |
NaN |
01:00:00 |
3 |
2006-01-04 |
01:00:00 |
1457.21700 |
NaN |
NaN |
NaN |
01:00:00 |
4 |
2006-01-05 |
01:00:00 |
1477.13100 |
NaN |
NaN |
NaN |
01:00:00 |
... |
|
... |
... |
... |
... |
... |
... |
4378 2017-12-27 01:00:00 |
1263.94091 |
394.507 |
16.530 |
411.037 |
01:00:00 |
||
4379 2017-12-28 01:00:00 |
1299.86398 |
506.424 |
14.162 |
520.586 |
01:00:00 |
||
4380 |
2017-12-29 01:00:00 |
1295.08753 |
584.277 |
29.854 |
614.131 |
01:00:00 |
7
4381 |
2017-12-30 |
01:00:00 |
1215.44897 |
721.247 |
7.467 |
728.714 |
01:00:00 |
4382 |
2017-12-31 |
01:00:00 |
1107.11488 |
721.176 |
19.980 |
741.156 |
01:00:00 |
[4383 rows x 6 columns]
data = data.set_index('Date') # Перенос колонки 'Date' в качестве значений индексов дф
data
|
Consumption |
Wind |
Solar |
Wind+Solar |
time |
Date |
|
|
|
|
|
2006-01-01 01:00:00 |
1069.18400 |
NaN |
NaN |
NaN |
01:00:00 |
2006-01-02 01:00:00 |
1380.52100 |
NaN |
NaN |
NaN |
01:00:00 |
2006-01-03 01:00:00 |
1442.53300 |
NaN |
NaN |
NaN |
01:00:00 |
2006-01-04 01:00:00 |
1457.21700 |
NaN |
NaN |
NaN |
01:00:00 |
2006-01-05 01:00:00 |
1477.13100 |
NaN |
NaN |
NaN |
01:00:00 |
... |
... |
... |
... |
... |
... |
2017-12-27 01:00:00 |
1263.94091 |
394.507 |
16.530 |
411.037 |
01:00:00 |
2017-12-28 01:00:00 |
1299.86398 |
506.424 |
14.162 |
520.586 |
01:00:00 |
2017-12-29 01:00:00 |
1295.08753 |
584.277 |
29.854 |
614.131 |
01:00:00 |
2017-12-30 01:00:00 |
1215.44897 |
721.247 |
7.467 |
728.714 |
01:00:00 |
2017-12-31 01:00:00 |
1107.11488 |
721.176 |
19.980 |
741.156 |
01:00:00 |
[4383 rows x 5 columns]
Построение графика зависимости даты только от энергопотребления
(библ. seaborn (sns))
sns.lineplot(data = data['Consumption'])
<matplotlib.axes._subplots.AxesSubplot at 0x7f54e6428350>
8