Введение

MindsDB — это инструмент машинного обучения с открытым исходным кодом, который обеспечивает автоматизированное машинное обучение для вашей базы данных. MindsDB предлагает возможности прогнозирования в вашей базе данных. Tableau позволяет легко и интуитивно визуализировать ваши данные. В этом руководстве мы будем использовать MindsDB для прогнозирования почасового спроса на электроэнергию в США и визуализировать результаты в таблице. Для выполнения этого руководства вам необходимо иметь работающее подключение к MindsDB либо локально, либо через cloud.mindsdb.com. Вы можете использовать это руководство для подключения к облаку MindsDB.

Настройка данных

Подключение данных в виде файла

Выполните следующие действия, чтобы загрузить файл в MindsDB Cloud.

  • Войдите в свою учетную запись MindsDB Cloud, чтобы открыть редактор MindsDB.
  • Перейдите к Add data разделу, нажав кнопку Add data, расположенную в правом верхнем углу.

  • Выберите вкладку «Файлы».

  • Выберите вариант Import File.
  • Загрузите файл (Demand for United States Lower 48 (region) hourly - UCT- time.csv), назовите таблицу, в которой хранятся данные файла (здесь это US_Electricity_Demand), и нажмите кнопку Save and Continue.

Как только вы закончите загрузку, вы можете запросить данные напрямую с помощью;

SELECT * FROM files.US_Electricity_Demand LIMIT 10;

Результат будет:

Понимание набора данных

Если вам интересно узнать, как меняется спрос на электроэнергию в США в течение года, или вы хотите узнать, как меняется структура электроэнергии с течением времени, этот набор данных для вас!

Энергия всегда была чем-то само собой разумеющимся, но в последние годы со всеми узкими местами и геополитическими проблемами, которые следовали одна за другой, она становится все более центральной темой.

Вы можете получить набор данных на Kaggle здесь и использовать файл Demand for United States Lower 48 (region) hourly - UCT- time.csv.

Создание предиктора

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

CREATE PREDICTOR mindsdb.[predictor_name]
FROM [integration_name]
    (SELECT [sequential_column], [partition_column], [other_column], [target_column]
     FROM [table_name])
PREDICT [target_column]

ORDER BY [sequential_column]
GROUP BY [partition_column]

WINDOW [int]
HORIZON [int];
  • CREATE PREDICTOR: создает предиктор с именем predictor_name в таблице mindsdb.
  • FROM files: указывает на таблицу, содержащую данные.
  • PREDICT Close: определяет столбец для прогнозирования.
  • ORDER BY: показывает столбец для упорядочивания данных во время обучения.
  • GROUP BY: Это необязательно. Столбец, по которому группируются строки, образующие раздел. Например, если вы хотите спрогнозировать запасы всех товаров в магазине, вы можете разбить данные по product_id, чтобы каждый отдельный product_id имел свой собственный временной ряд.
  • WINDOW: определяет, на сколько строк «оглядываться назад» при создании прогноза.
  • HORIZON: указывает количество будущих прогнозов. По умолчанию 1.

Давайте продолжим делать прогнозы на нашем наборе данных:

CREATE PREDICTOR mindsdb.hourly_electricity_demand
FROM files (SELECT * FROM US_Electricity_Demand)
PREDICT megawatthours
ORDER by date
-- the target column to be predicted stores one row per quarter
WINDOW 100      -- using data from the 100 rows to make forecasts 
HORIZON 20;    -- making forecasts for the next years

При выполнении получаем:

Query successfully completed

Статус предиктора

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

SELECT status
FROM mindsdb.predictors
WHERE name='hourly_electricity_demand';

Если мы запустим его сразу после создания предиктора, мы получим такой результат:

+------------+
| status     |
+------------+
| generating |
+------------+

Через некоторое время вы получите:

+------------+
| status     |
+------------+
| training   |
+------------+

И, наконец, это должно быть вашим результатом:

+------------+
| status     |
+------------+
| complete   |
+------------+

Делать прогнозы

Теперь, когда у нас есть модель прогнозирования, мы можем просто выполнить несколько простых операторов SQL-запроса, чтобы предсказать целевое значение на основе параметров функции:

SELECT date, megawatthours AS `energy_demand` ,energy_demand_explain
FROM mindsdb.hourly_electricity_demand
JOIN files.US_Electricity_Demand
LIMIT 5;

Ожидаемый результат:

Вы также можете проверить точность предиктора с помощью приведенного ниже запроса, чтобы увидеть, как он работает.

SELECT accuracy
FROM mindsdb.predictors
WHERE name = 'hourly_electricity_demand'

Выход:

+------------+
| accuracy   |
+------------+
| 0.992      |
+------------+

Оценка точности варьируется от 0 до 1, и в результате модель будет точной в 90% случаев.

Подключение MindsDB к Tableau

Tableau позволяет легко и интуитивно визуализировать ваши данные. В этом уроке мы будем использовать Tableau для создания визуализаций наших прогнозов.

Как подключиться

  • Сначала создайте новую книгу в Tableau и откройте вкладку Connectors в окне Connect to Data.
  • Нажмите на MySQL

Теперь вы подключены, и ваша страница должна выглядеть так:

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

Прежде чем вы сможете визуализировать прогнозы в Tableau, вы должны сначала выбрать источник данных. А поскольку прогнозы в этой статье генерируются с использованием оператора SQL, вам потребуется создать собственный SQL-запрос в Tableau для создания источника данных. Сделать это:

  • Сначала выберите New Custom SQL в левой части окна и используйте приведенный ниже запрос, чтобы сгенерировать потребность в энергии для каждого часа. Вы можете предварительно просмотреть результаты или напрямую загрузить данные в Tableau.
SELECT date, megawatthours AS `energy_demand`
FROM mindsdb.hourly_electricity_demand
JOIN files.US_Electricity_Demand

  • Перейдите на вкладку «Лист» и щелкните правой кнопкой мыши Energy_demand и дату, чтобы преобразовать их типы данных в «Число (целое)» и «Дата и время» соответственно. Кроме того, при щелчке правой кнопкой мыши по energy_demand и данным выберите параметр, чтобы преобразовать его в непрерывный показатель.

  • Перетащите меру energy_demand на полку строки, а измерение даты — на полку столбца.

Заключение

В этом уроке мы создали собственное облако Mindsdb, загрузили набор данных в интерфейс, создали модель предиктора и визуализировали ее в Tableau.

Получайте удовольствие, пробуя это сами!

Поставьте лайк или оставьте комментарий, если этот урок был полезен