- •Лабораторная работа №1
- •Загрузка, инициализация и анализ данных
- •Подготовка временных меток
- •Построение автокорреляционной функции (АКФ)
- •Блок построения временных трендов с усреднением по 7 и 365 дней по колонке 'Consumption'
- •Формирование функции вычисления точности прогнозной модели
- •Реализации алгоритмов машинного обучения
- •Корректировки стационарности временного ряда, улучшение точности прогнозирования
- •Блок корректировки стационарности временного ряда
- •Функция генерирования дополнительных временных признаком
- •Лаборатоное задание
- •Лабораторная работа №2
- •Решение задач классификации машинного обучения
- •Теоретические сведения
- •Практическая часть
- •Лабораторная работа №3
- •«Создание баз знаний в Visual Prolog»
- •Задание на лабораторную работу:
- •Решение.
- •Результат:
- •Лабораторная работа №4
- •Пример сети распознавания цифры с помощью библиотеки Keras
- •Лабораторное задание
Построение автокорреляционной функции (АКФ)
plt.figure(figsize=(11,4), dpi= 80) # Инициализация подложки графика
#Построение АКФ средствами библиоткеи pandas (функции plotting и autocorrelation_plot)
#Функция .loc позволяет обратиться к группе строчек или колонок по
#соответствующим названиям индексов или названиям колонок.
#В примере ниже выбирается набор строк колонки 'Consumption' дф data в диапазоне даты
#от '2012-01' до '2013-01' и передается функции вычисления и построения АКФ. pd.plotting.autocorrelation_plot(data.loc['2012-01': '2013-01', 'Consumption']);
9
Блок построения временных трендов с усреднением по 7 и 365 дней по колонке 'Consumption'
data_columns = ['Consumption', 'Wind', 'Solar', 'Wind+Solar']
# data_365d_rol - название дф, в который заносятся колонки с усреднением за
365 дней (функции rolling() и mean())
data_365d_rol = data[data_columns].rolling(window = 365, center = True).mean()
# data_7d_rol - название дф, в который заносятся колонки с усреднением за 7
дней (функции rolling() и mean())
data_7d_rol = data[data_columns].rolling(window = 7, center = True).mean()
data_365d_rol['Consumption'] = data_365d_rol['Consumption'].fillna(method = 'bfill').fillna(method = 'ffill')
# Построение графика с помощью библиотеки matplitlib (plt)
fig, ax = plt.subplots(figsize = (11,4)) # Инициализация графика fig -
подложка (холст), ax - оси
#Построение колонки 'Consumption' дф data, через запятую передаются атрибуты для настройки графика
#marker - маркер точки на графике, markersize - размер маркера, color - цвет,
#linestyle - тип линии (если используется),
#label - подпись графика (не заголовок, отображается функцией legend())
ax.plot(data['Consumption'], marker='.', markersize=2, color='0.6', linestyle='None', label='Daily')
# Построение колонки 'Consumption' дф data_7d_rol ax.plot(data_7d_rol['Consumption'], linewidth=2, label='7-d Rolling Mean')
# Построение колонки 'Consumption' дф data_365d_rol ax.plot(data_365d_rol['Consumption'], color='0.2', linewidth=3, label='Trend (365-d Rolling Mean)')
#Добваление на график таблички (права низ) с названиями графиков ax.legend()
#Добавление названия оси абсцисс
ax.set_xlabel('Year')
#Добавление названия оси ординат ax.set_ylabel('Consumption (GWh)')
#Добавление названия всего графика
ax.set_title('Trends in Electricity Consumption')
Text(0.5, 1.0, 'Trends in Electricity Consumption')
10
Формирование функции вычисления точности прогнозной модели
import sklearn.metrics as metrics # Импорт библиотеки по рассчету метрик ошибки
import numpy as np
#def - инициализация функции, далее идет название и передаваемые атрибуты
#y_true - исходный дф, y_pred - спрогнозированный дф, model - название
#модели машинного обучения
def regression_results(y_true, y_pred, model):
#Метрики регресионных моделей
#Средняя абсолютная ошибка
mean_absolute_error = metrics.mean_absolute_error(y_true, y_pred)
# Средняя квадратичная ошибка
mse = metrics.mean_squared_error(y_true, y_pred)
# Медианная вбсолютная ошибка
median_absolute_error = metrics.median_absolute_error(y_true, y_pred)
#Коэффициент детерминации (R^2) - определяет степень соответствия
#полученной в ходе МО модели исходным данным. (Модели с коэфф. детерм.
#более 0,8 (80%) считаются достаточно точными)
r2 = metrics.r2_score(y_true, y_pred)
# Вывод вычисленных метрик
print(' ') print(model)
#print('explained_variance: ', round(explained_variance,4))
#print('mean_squared_log_error: ', round(mean_squared_log_error,4)) print('r2: ', round(r2,4))
print('MAE: ', round(mean_absolute_error,4))
print('MSE: ', round(mse,4)) print('RMSE: ', round(np.sqrt(mse),4))
11