Давайте объединим PowerBi и R для данных о людях…

Добро пожаловать в четвертую часть из семи частей. Если вы впервые знакомитесь с моими сообщениями, ознакомьтесь с предыдущими здесь. В этом посте мы рассмотрим, как реализовать обученную модель машинного обучения в PowerBi. Этот шаг имеет решающее значение, поскольку без реализации любые модели машинного обучения никому не пригодятся. Модели машинного обучения должны быть введены в действие, чтобы добиться успеха. Платформа PowerBi предоставляет широкий набор инструментов и методов для операционализации моделей, которые вы создали с помощью таких языков, как (R , Python или C++).

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

01 Давайте рассмотрим код модели

Вы переходите к своему файлу RMarkdown и получаете окончательный код проверки модели.

library(dplyr) #for data wrangling 
library(ggplot2) #for visualization 
library(caret) #for machine learning
path <- r"(path to your file)" #the data you got from the link above 
hr <- read.csv(path, stringsAsFactors = T, header=T)
hr <- as_tibble(hr)
hr$model_weights <- ifelse(hr$Attrition == "Yes",
                        table(hr$Attrition)[1]/nrow(hr),
                        table(hr$Attrition)[2]/nrow(hr))
hr <- hr %>% select(-c( "EmployeeCount",  "EmployeeNumber","Over18" , "StandardHours"))
set.seed(123)
index <- sample(2, nrow(hr), replace = TRUE, prob = c(0.7, 0.3))
train <- hr[index==1,]
test <- hr[index==2,]
trainup <- 
train %>% 
upSample( train$Attrition) %>% 
select(-c("Attrition")) %>% 
rename(Attrition=Class)
control = trainControl(method = "repeatedcv", number=10,repeats = 5)
xgbGrid01 <- expand.grid(nrounds = c(20,40,60,80),
                       max_depth = c(10,15,20,25),
                       eta = c(0.1,0.2,0.4),
                       gamma = 0,
                       colsample_bytree = 0.7,
                       min_child_weight = 1,
                       subsample = c(0.6,0.8,1))
set.seed(123)
xGB.modelenhanced <- 
train(Attrition ~ ., 
data=trainup,   
metric = "Accuracy",
method="xgbTree",
verbosity = 0,
weights = model_weights , #adding model weights 
preProcess=c("center","scale"),
trControl = control, #cross validation 
tuneGrid = xgbGrid01) # hyperparameter tuning

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

path <- r"(path to your file)"
saveRDS(xGB.modelenhanced,path)

02 Давайте настроим модель в PowerBi

Затем вы переходите к PowerBi и вводите код SQL для подключения к основной базе данных, содержащей полные данные о сотрудниках.

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

После загрузки данных в окно редактора запросов. Переместитесь вправо и нажмите «Выполнить сценарий R» на вкладке преобразования.

Затем вы вводите этот код для настройки модели.

# 'dataset' holds the input data for this script
library(caret) #for machine learning
dataset$model_weights <- ifelse(dataset$Attrition == "Yes",
                        table(dataset$Attrition)[1]/nrow(dataset),
                        table(dataset$Attrition)[2]/nrow(dataset))
Modelfit = readRDS("path to your model")
prediction = predict(Modelfit, dataset)
dataset$model <- prediction 

output<- dataset

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

Давайте разберемся, что здесь происходит. Фрейм данных «набор данных» автоматически наследуется от PowerBi. Поскольку веса модели изначально недоступны, нам нужно установить их для этого фрейма данных.

Затем мы читаем модель, сохраненную из нашей консоли R, с помощью функции «readRDS». Затем мы используем его для прогнозирования новых данных. Прогнозы назначаются столбцу модели набора данных.

Затем этот фрейм данных выводится как результат кода. Этот вывод теперь содержит дополнительный столбец с именем модель, который содержит метки, предсказанные моделью. Виола!! теперь вы внедрили обученную модель в PowerBi. 😄😄😄

03 Визуализируйте в PowerBi, используя R

Другой вопрос: что, если вам нужно визуализировать что-то в PowerBi, а его настраиваемый визуал, недоступный в PowerBi, изначально позволяет, например, блокплот с geom_jitter, как мы сделали в первом сообщении.

Нет опасений, что PowerBi может предоставить такую ​​функциональность.

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

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

# The following code to create a dataframe and remove duplicated rows is always executed and acts as a preamble for your script:
# dataset <- data.frame(Department, Attrition, EmployeeCount, ï..Age)
# dataset <- unique(dataset)
library(ggplot2)
# Paste or type your script code here:
ggplot(dataset, aes(MonthlyRate,y=Attrition))+
geom_boxplot(alpha = 0.1,aes(color=Attrition))+
geom_jitter(size = 1.5,alpha=0.4,aes(color=Attrition))+
ggtitle("Is MonthlyRate related to attrition")+
theme(plot.title = element_text(face="bold",hjust = 0.5))

Вау, это дает нам то же изображение, но на этот раз в PowerBi.

04 Обратите внимание

Визуальные элементы ggplot2 отлично подходят для PowerBi, но следует помнить, что эти визуальные элементы не являются интерактивными, как обычные визуальные элементы PowerBi.

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

Будем надеяться, что Microsoft добавит эту функциональность и продолжит ее улучшать.

05 R Scripts как источник данных для PowerBi

Это еще одна полезная функция PowerBi. Допустим, у вас есть пара электронных таблиц, разбросанных по нескольким офисам, и вы хотите объединить их все и, наконец, визуализировать результат в PowerBi.

Нет проблем, вы можете превратить фрейм данных, созданный с помощью R-скрипта, непосредственно в PowerBi.

Просто используйте приведенную ниже опцию, чтобы открыть консоль, где вы можете ввести свой сценарий. 👍

Ну вот и конец очередной статьи.

Как всегда, пожалуйста, оставляйте любые комментарии и предложения ниже. А сейчас до свидания.

👋👋👋