Цель этого проекта – прогнозировать значения энергопотребления в городе Тетуан в Марокко.

Тетуан — город, расположенный на севере центральной части Марокко недалеко от Средиземного моря (7 миль). Я собрал набор данных с https://archive.ics.uci.edu/ml/datasets/Power+consumption+of+Tetouan+city и попытался предсказать значения энергопотребления для определенной зоны за определенный период времени с использованием различных алгоритмов машинного обучения. Здесь я использовал алгоритмы машинного обучения на основе регрессии, поскольку целевая переменная является числовой. Я разделил работу на 2 части, где Часть 1 включает в себя исследовательский анализ данных, очистку данных, визуализацию данных и функцию создания функций. В Части 2 я продолжу использовать регрессоры машинного обучения, такие как регрессор XGBoost, регрессор K-ближайших соседей, настройка гиперпараметров XGBoost, регрессор случайного леса, регрессор дерева решений, линейная регрессия и регрессор опорных векторов, таким образом наконец получить приемлемый результат.

Набор данных связан с энергопотреблением трех различных распределительных сетей города Тетуан. Данные содержат 52 416 точек данных об энергопотреблении в 10-минутных окнах, начиная с 1 января 2017 года (0:00) и заканчивая 30 декабря 2017 года (23:50). . Электростанции в 3 зонах электрифицируют 3 разных района города, поэтому в данном случае есть 3 целевые переменные, хотя я работал только с одной зоной.

Информация об атрибутах:

Дата/время: продолжительность времени составляет десять минут.

Температура: температура в городе Тетуан указана в градусах Цельсия.

Влажность: влажность города Тетуан в %.

Скорость ветра: скорость ветра в городе Тетуан в км/ч.

общие диффузные потоки

рассеянные потоки

Энергопотребление в зоне 1 города Тетуан в киловаттах (кВт).

Энергопотребление в Зоне 2 города Тетуан в кВт.

Энергопотребление в Зоне 3 города Тетуан в кВт.

Использованы соответствующие библиотеки

  1. numpy: операции линейной алгебры

2. pandas: обработка данных, загрузка данных, фреймы данных, файлы .csv и т. д.

3. seaborn: используется для создания графика корреляции для наблюдения за связью между переменными.

4. matplotlib: для создания соответствующих графиков и графиков с помощью pyplot.

5. sklearn: библиотека машинного обучения для использования различных алгоритмов регрессии, описанных выше, и других подбиблиотек, таких как train_test_split, для разделения набора данных на обучающую и тестовую версии.

6. sklearn.metrics: чтобы проверить работоспособность каждой модели с точки зрения среднеквадратичной ошибки, чтобы найти лучшего из всех для решения проблемы.

#Importing the relevant libraries to do the data analysis
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.metrics import mean_squared_error,r2_score
# import warnings
import warnings
# ignore warnings
warnings.filterwarnings("ignore")

ИССЛЕДОВАТЕЛЬСКИЙ АНАЛИЗ ДАННЫХ (EDA)

Набор данных .csv импортируется с помощью pandas, а затем методы .describe() и .info() используются для проверки типов данных атрибутов, размера и описательной статистики кадр данных. Фрейм данных не содержит пропущенных значений и содержит 52416 строк и 9 столбцов.

На приведенном выше снимке экрана показан результат метода .info(), отсутствуют пропущенные значения, и все функции имеют тип данных с плавающей запятой, кроме функции DateTime. Эта проблема, которую мы пытаемся решить, связана с временными рядами, поэтому функция даты должна иметь тип данных datetime. Код для преобразования типа данных:

#Converting object to datetime datatype
data['DateTime'] = pd.to_datetime(data['DateTime'], errors='coerce')

Затем необходимо установить для функции DateTime значение index. Команда data.set_index() используется для замены текущего индекса столбцом DateTime, а также удобно отображать данные относительно столбца даты.

#transforming DateTime column into index
data = data.set_index('DateTime')

Таким образом, после преобразования типа данных данные выглядят так, как показано ниже.

Визуализация данных

Таким образом, визуализация данных может быть выполнена для лучшего понимания данных.

Тепловая карта создается с использованием морских рождений для наблюдения за корреляцией между переменными. Созданная матрица корреляции показывает единую корреляцию между каждым объектом с другими объектами в наборе данных.

Если две переменные связаны между собой:

от 0,0 до 0,3, они слабо коррелированы,

от 0,3 до 0,6, они умеренно коррелированы,

от 0,6 до 0,9, они сильно коррелированы,

наконец, >0,9, они очень сильно коррелированы

Положительный и отрицательный указывает, связаны ли переменные прямо или обратно, например. корреляция -0,7 между двумя переменными означает, что если одна переменная увеличивается, другая сильно уменьшается (как определено в списке выше)

Теперь можно выполнить анализ корреляций между независимыми и зависимыми функциями:

Температура умеренно положительно коррелирует со всеми значениями энергопотребления.

Хотя Влажность демонстрирует слабую отрицательную корреляцию с энергопотреблением всех трех зон.

Другие переменные не имеют существенной корреляции со значениями энергопотребления, поэтому они не требуют особого внимания и будут удалены позже при моделировании машинного обучения.

Наконец, зоны энергопотребления Zone1, Zone2 и Zone3 показывают более высокие значения корреляции между собой. Это говорит о том, что существуют незначительные различия в моделях потребления во всех районах, и все они, кажется, увеличиваются или уменьшаются вместе. Таким образом, я рассматривал только значения энергопотребления в Зоне 1 для тестирования с различными регрессионными моделями, также значения энергопотребления в других зонах не сильно отличаются от Зоны 1, поскольку мы можем найти из тепловой карты корреляции, поэтому это не будет иметь большого значения.

Создание функции

Столбец DateTime можно разделить на различные факторы, такие как день, неделя, месяц, час, год, день года, неделя года и т. д., и их можно использовать для понимания взаимосвязей между переменные. Я ссылался на этустатью, чтобы выполнить часть создания функций и визуализировать отношения функций с помощью блочных диаграмм.

def create_features(df):
    """
    Create time series features like hour, month, year, day, etc. based on time series index.
    """
    df = df.copy()
    df['hour'] = df.index.hour
    df['dayofweek'] = df.index.dayofweek
    df['quarter'] = df.index.quarter
    df['month'] = df.index.month
    df['year'] = df.index.year
    df['dayofyear'] = df.index.dayofyear
    df['dayofmonth'] = df.index.day
    df['weekofyear'] = df.index.isocalendar().week
    return df
df = create_features(data)

Затем я использовал описанные выше функции и попытался определить взаимосвязь между значениями энергопотребления в зоне 1 и значениями, связанными со временем (например, час дня, день недели, неделя, месяц и т. д.).

Приведенный выше набор диаграмм показывает, что энергопотребление увеличивается с 8 до 16 ч, что указывает на то, что его используют отдельные потребители и предприятия (крупные, средние или малые). в рабочее время. Более того, оно также увеличивается с 17 до 22 часов. В определенные утренние часы (от 0 до 3 часов) в точках данных есть много выбросов, которые можно наблюдать.

В зимние месяцы январь, февраль, март и апрель энергопотребление ниже, ноябрь и декабрь еще ниже, чем в первые, поскольку показано на диаграммах, а самые засушливые месяцыиюнь, июль и августимеютмаксимальное энергопотребление.

Подробную информацию о погоде в городе можно найти здесь.

Энергопотребление во все будние дни остается одинаковым, меньше всего расходуется воскресенье по понятным причинам, то же самое и в субботу.

Я закончу первую часть здесь и продолжу часть моделирования машинного обучения в следующей статье. Тогда я поделюсь всем кодом через свой GitHub. Пожалуйста, также проверьте мои профили LinkedIn и GitHub для получения большего количества подобного контента. Также, пожалуйста, проверьте мой профиль Medium, чтобы увидеть предыдущие статьи, если они вам интересны.

Подпишитесь на DDIntel Здесь.

Посетите наш сайт здесь: https://www.datadriveninvestor.com

Присоединяйтесь к нашей сети здесь: https://datadriveninvestor.com/collaborate