Автор сообщества: Чандре Ван Дер Вестхайзен
Швейная промышленность является важным примером промышленной глобализации. Для лиц, принимающих решения в швейной промышленности, чрезвычайно важно анализировать, отслеживать и прогнозировать производительность труда сотрудников, поскольку компании полагаются на производительность и доставку своих работников, чтобы удовлетворить огромный мировой спрос на швейную продукцию. Возможности машинного обучения в базе данных MindsDB обеспечивают удобство прогнозирования производительности, помогая работодателям в управлении сотрудниками.
В этом учебном пособии рассматривается, как работодатели могут делать прогнозы производительности труда работников, производящих одежду, с помощью регрессионной прогнозной модели машинного обучения. Вы узнаете, как подключить свою базу данных непосредственно к MindsDB, создать и обучить модели и сделать прогнозы.
Предварительные условия
- Доступ к MindsDB Cloud или локальное развертывание с помощью установки docker или pip.
- Набор данных: Вы можете найти набор данных на Kaggle.
Подключение вашей базы данных к MindsDB.
Первым шагом будет установление соединения с базой данных через графический интерфейс MindsDB, который имеет редактор SQL, упрощающий выполнение запросов. MindsDB позволяет подключаться к вашим любимым базам данных, хранилищам данных и озерам данных с помощью синтаксиса CREATE DATABASE.
Сначала нам нужно подключить MindsDB к базе данных, в которой хранятся данные о сотрудниках, производящих одежду:
- Зайдите в графический интерфейс MindsDB либо через облако, либо по URL 127.0.0.1:47334/.
- На странице по умолчанию выберите кнопку Добавить данные или выберите значок разъема на левой боковой панели.
-
Появится страница «Выберите источник данных», на которой вы сможете выбрать тип базы данных. MindsDB имеет список баз данных, которые можно выбрать. В этом учебнике мы выберем базу данных postgres.
-
После выбора типа базы данных страница автоматически перейдет в редактор SQL, где автоматически появится синтаксис для создания соединения с базой данных, чтобы вы могли ввести необходимые параметры.
Необходимые параметры следующие:
- CREATE DATABASE display_name — отображаемое имя для базы данных.
- WITH ENGINE = «postgres», — имя обработчика mindsdb.
- ПАРАМЕТРЫ = {
- «user»: » «, — ваш пользователь базы данных.
- «password»: » «, — Ваш пароль.
- «host»: » «, — хост, это может быть ip или url.
- «port»: «5432», — общий порт — 5432.
- «database»: » » — имя вашей базы данных *опционально}.
Выберите кнопку Run
или Shift+Enter для выполнения синтаксиса. После создания соединения с базой данных на консоли появится сообщение «Запрос успешно завершен».
Обратите внимание, что некоторые соединения с базами данных требуют запуска туннеля Ngrok для установления соединения.
Выполните команду ngrok в терминале:ngrok tcp [db-port]
например, если номер вашего порта 5433, вы увидите аналогичное сообщение:
Session Status online Account myaccount (Plan: Free) Version 2.3.40 Region United States (us) Web Interface http://127.0.0.1:4040 Forwarding tcp://6.tcp.ngrok.io:14789 -> localhost:5433
Информация о перенаправленном адресе потребуется при подключении к графическому интерфейсу MindsDB. Выберите и скопируйте информацию ‘Forwarding’, в данном случае это
6.tcp.ngrok.io:14789
, где 6.tcp.ngrok.io будет использоваться в качестве параметра хоста, а 14789 — в качестве номера порта.
После успешной интеграции базы данных мы можем запросить таблицу из базы данных, чтобы убедиться, что данные пройдут через MindsDB.
Вы можете выполнять запросы непосредственно в базе данных. Ниже приведен пример используемого синтаксиса:
SELECT *
FROM example_db.datasource.table_name
LIMIT 10;
Мы запустим запрос для предварительного просмотра данных:
SELECT *
FROM mindsdb_predictions.data.garments
LIMIT 10;
MindsDB также имеет функциональность для загрузки файла и ВЫБОРА данных из файла для создания модели машинного обучения.
Понимание данных
+----------+----------+------------+----------+------+-----------------------+-------+--------+-----------+-----------+-----------+----------+--------------------+---------------+---------------------+
| date | quarter | department | day | team | targeted_productivity | smv | wip | over_time | incentive | idle_time | idle_men | no_of_style_change | no_of_workers | actual_productivity |
+----------+----------+------------+----------+------+-----------------------+-------+--------+-----------+-----------+-----------+----------+--------------------+---------------+---------------------+
| 1/1/2015 | Quarter1 | sweing | Thursday | 12 | 0.8 | 11.41 | 968.0 | 3660 | 50 | 0.0 | 0 | 0 | 30.5 | 0.800570492 |
| 1/1/2015 | Quarter1 | sweing | Thursday | 6 | 0.8 | 25.9 | 1170.0 | 1920 | 50 | 0.0 | 0 | 0 | 56.0 | 0.800381944 |
| 1/1/2015 | Quarter1 | sweing | Thursday | 7 | 0.8 | 25.9 | 984.0 | 6720 | 38 | 0.0 | 0 | 0 | 56.0 | 0.800125 |
| 1/1/2015 | Quarter1 | sweing | Thursday | 3 | 0.75 | 28.08 | 795.0 | 6900 | 45 | 0.0 | 0 | 0 | 57.5 | 0.753683478 |
| 1/1/2015 | Quarter1 | sweing | Thursday | 2 | 0.75 | 19.87 | 733.0 | 6000 | 34 | 0.0 | 0 | 0 | 55.0 | 0.753097531 |
+----------+----------+------------+----------+------+-----------------------+-------+--------+-----------+-----------+-----------+----------+--------------------+---------------+---------------------+
Где:
Колонка | Описание | Тип данных | Использование |
---|---|---|---|
date |
Дата в формате ММ-ДД-ГГГГ | integer |
Характеристика |
quarter |
Часть месяца. Месяц был разделен на четыре квартала | character varying |
Характеристика |
department |
Отдел, связанный с данным экземпляром | integer |
Характеристика |
day |
День недели | character varying |
Характеристика |
team |
Ассоциированный номер команды с экземпляром | integer |
Характеристика |
targeted_productivity |
Целевая производительность, установленная администрацией для каждой команды на каждый день. | integer |
Характеристика |
smv |
Стандартное значение минуты, это время, отведенное на выполнение задачи. | integer |
Характеристика |
wip |
Незавершенное производство. Включает в себя количество незавершенных элементов для продуктов | integer |
Характеристика |
over_time |
Представляет собой количество сверхурочной работы каждой команды в минутах | integer |
Характеристика |
incentive |
Представляет сумму финансового поощрения (в БДТ), которая позволяет или мотивирует определенный курс действий. | integer |
Характеристика |
idle_time |
Количество времени, когда производство было прервано по нескольким причинам | integer |
Характеристика |
idle_men |
Количество работников, которые простаивали из-за остановки производства | integer |
Характеристика |
no_of_style_change |
Количество изменений в стиле конкретного продукта | integer |
Характеристика |
no_of_workers |
Количество рабочих в каждой команде | integer |
Характеристика |
actual_productivity |
Фактический % производительности, который был достигнут рабочими. Варьируется от 0-1 | integer |
Метка |
Метка — это то, что мы прогнозируем, — переменная y в простой линейной регрессии.
Характеристика — это входная переменная — переменная x в простой линейной регрессии.
Создание регрессионной модели прогнозирования машинного обучения.
Чтобы делать предсказания, мы создадим модель машинного обучения с помощью оператора CREATE PREDICTOR
и сделаем регрессионное предсказание.
В синтаксисе мы укажем, какие столбцы/функции использовать для обучения и какой столбец модель должна научиться предсказывать в качестве нашей цели/метки. В данном случае мы выберем все данные для обучения и используем столбец ‘Target’ в качестве целевой переменной/метки, которую мы хотим предсказать.
В редакторе SQL будет выполнен следующий синтаксис:
CREATE PREDICTOR garments_productivity
FROM mindsdb_predictions
(SELECT * FROM data.garments)
PREDICT actual_productivity;
Выберите кнопку Run
или Shift+Enter для выполнения синтаксиса. Если при создании запроса не возникло проблем, вы получите сообщение в консоли «Запрос успешно завершен».
Обучение модели может занять некоторое время. Состояние обучения модели можно проверить с помощью приведенного ниже синтаксиса:
SELECT * FROM mindsdb.predictors WHERE name='garments_productivity'
Как только модель будет создана, статус должен показать обучение. Как только модель закончит обучение, статус покажет завершение. Ниже показано, что точность модели составляет 84%.
Статус предиктора должен быть «завершен» перед созданием прогноза
Создание регрессионного прогноза
Когда статус предиктора показывает «завершен», можно приступать к созданию прогноза. Прогнозирование выполняется с помощью оператора SELECT
путем запроса предиктора, как если бы это была таблица. Мы предоставим функции с параметрами, чтобы получить результат.
Для создания прогноза используется следующий синтаксис:
SELECT actual_productivity, actual_productivity_explain FROM garments_productivity WHERE date='1/1/2015' AND quarter='Quarter1' AND department='sweing' AND day='Thursday'
AND team=8 AND targeted_productivity=0.8 AND smv=26.16 AND wip=1108
AND over_time=7080 AND incentive=98 AND idle_time=0 AND idle_men=0
AND no_of_style_change=0 AND no_of_workers=59;
Выполните приведенный выше синтаксис, и вы увидите следующие результаты:
Фактическая производительность имеет значение от 0 до 1. Модель предсказала, что с этими параметрами результат для производительности сотрудников составит 0,93, а с помощью Target_explain
мы можем увидеть уровни доверия, которые показывают, что confidence_lower_bound составляет 0,8556, а confidence_higher_bound — 1. Это означает, что швейная компания может ожидать, что производительность сотрудников будет между 0,8556 и 1.
Составление пакетных прогнозов.
Модель также может делать пакетные прогнозы с помощью пункта JOIN
:
SELECT a.actual_productivity as productivity, b.actual_productivity as predicted_productivity,
a.date, a.quarter, a.department, a.day,
a.team, a.targeted_productivity, a.smv, a.wip,
a.over_time, a.incentive, a.idle_time, a.idle_men,
a.no_of_style_change, a.no_of_workers
FROM mindsdb_predictions.data.garments as a
JOIN mindsdb.garments_productivity as b limit 5;
Результаты:
+--------------+------------------------+----------+----------+------------+----------+------+-----------------------+-------+--------+-----------+-----------+-----------+----------+--------------------+---------------+
| productivity | predicted_productivity | date | quarter | department | day | team | targeted_productivity | smv | wip | over_time | incentive | idle_time | idle_men | no_of_style_change | no_of_workers |
+--------------+------------------------+----------+----------+------------+----------+------+-----------------------+-------+--------+-----------+-----------+-----------+----------+--------------------+---------------+
| 0.800570492 | 0.7820790218694679 | 1/1/2015 | Quarter1 | sweing | Thursday | 12 | 0.8 | 11.41 | 968.0 | 3660 | 50 | 0.0 | 0 | 0 | 30.5 |
| 0.800381944 | 0.8169200021797305 | 1/1/2015 | Quarter1 | sweing | Thursday | 6 | 0.8 | 25.9 | 1170.0 | 1920 | 50 | 0.0 | 0 | 0 | 56.0 |
| 0.800125 | 0.7619499385051534 | 1/1/2015 | Quarter1 | sweing | Thursday | 7 | 0.8 | 25.9 | 984.0 | 6720 | 38 | 0.0 | 0 | 0 | 56.0 |
| 0.753683478 | 0.762949004815915 | 1/1/2015 | Quarter1 | sweing | Thursday | 3 | 0.75 | 28.08 | 795.0 | 6900 | 45 | 0.0 | 0 | 0 | 57.5 |
| 0.753097531 | 0.752386052621824 | 1/1/2015 | Quarter1 | sweing | Thursday | 2 | 0.75 | 19.87 | 733.0 | 6000 | 34 | 0.0 | 0 | 0 | 55.0 |
+--------------+------------------------+----------+----------+------------+----------+------+-----------------------+-------+--------+-----------+-----------+-----------+----------+--------------------+---------------+
Хотите попробовать сами? Зарегистрируйте бесплатную учетную запись MindsDB и присоединяйтесь к нашему сообществу!
Присоединяйтесь к сообществу MindsDB на Slack или Github, чтобы задавать вопросы, делиться идеями и мыслями!
Обязательно загляните на официальный сайт MindsDB. Для получения дополнительной информации ознакомьтесь с другими учебными пособиями и документацией MindsDB.