Создание среды разработки и производства для машинного обучения в Power BI - Часть 2

Tags: Power BI, machine learning

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

Создание другой среды в Power Query

Для создания новой среды в Power Query мы создали две основные группы: одну для «Develop», а другую для «Production». Чтобы создать другую группу, мы просто щелкаем правой кнопкой мыши в окне запроса и создаем две отдельные группы.


Разработка (тестирование и обучение)


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

Сначала мы пишем некоторые R-коды для обучения моделей, а также для оценки алгоритма.

для «rpart» у нас есть:

Модель обучения 

1
2
3
4
5
6
7
8
9
10
11
12
13
library(rpart)
library(hydroGOF)
Nrows<-nrow(dataset)
ShufffelData<-sample(Nrows,0.8*Nrows)
Train<-dataset[ShufffelData,]
Test<-dataset[-ShufffelData,]
DT <- rpart(Survived~., data = Train, method = "class")
predictions <- predict(DT, Test)
Pred<-data.frame(Test$Survived)
names(Pred)[1]<-paste("actual")
i=1   for(i in 1:nrow(Test))
if(predictions[i,1]>=predictions[i,2]) {  Pred[i,2]<-"0"} else  {  Pred[i,2]<-"1")}
names(Pred)[2]<-paste("prediction")

Модель тестирования

1
2
3
4
5
6
7
8
9
10
11
12
cm <-as.matrix(table(Actual = Pred$actual, Predicted =Pred$prediction ))
sumtest<-sum(cm)
NrowTest<-nrow(cm)
diag <- diag(cm)
rowsums = apply(cm, 1, sum)
colsums = apply(cm, 2, sum)
p = rowsums / sumtest
q = colsums / sumtest
accuracy = sum(diag) / sumtest
precision = diag / colsums
recall = diag / rowsums
f1 = 2 * precision * recall / (precision + recall)

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

Код M для функции с параметрами в Power Query для обучения и отображения результата теста алгоритма rpart будет выглядеть следующим образом:

1
2
3
4
5
6
7
8
9
(#"Source Table" as table,#"Prediction Column"as text,Split as number,Method as text) as table=>
 
let
    Source = #"Source Table",
     #"Run R Script" = R.Execute("library(rpart)#(lf)library(hydroGOF)#(lf)Nrows<-nrow(dataset)#(lf)ShufffelData<-sample(Nrows,"&Text.From(Split)&"*Nrows)#(lf)Train<-dataset[ShufffelData,]#(lf)Test<-dataset[-ShufffelData,]#(lf)#(lf)DT <- rpart("&#"Prediction Column"&"~., data = Train, method = """&Method&""")#(lf)predictions <- predict(DT, Test)#(lf) Pred<-data.frame(Test$"&#"Prediction Column"&")#(lf) names(Pred)[1]<-paste(""actual"")#(lf)#(lf) i=1#(lf)for(i in 1:nrow(Test))#(lf){#(lf)if(predictions[i,1]>=predictions[i,2])#(lf)  {  Pred[i,2]<-""0""}#(lf)else #(lf) {  Pred[i,2]<-""1""#(lf)}#(lf) #(lf)}#(lf) #(lf) names(Pred)[2]<-paste(""prediction"")#(lf) #(lf) #(lf)cm <-as.matrix(table(Actual = Pred$actual, Predicted =Pred$prediction ))#(lf)sumtest<-sum(cm)#(lf)NrowTest<-nrow(cm)#(lf)diag <- diag(cm)#(lf)rowsums = apply(cm, 1, sum)#(lf)colsums = apply(cm, 2, sum) #(lf)p = rowsums / sumtest #(lf)q = colsums / sumtest #(lf)accuracy = sum(diag) / sumtest #(lf)precision = diag / colsums #(lf) recall = diag / rowsums #(lf)f1 = 2 * precision * recall / (precision + recall) #(lf)  #(lf)DTrpartEval<- data.frame(accuracy,precision, recall, f1)",[dataset=Source]),
     DTrpartEval1 = #"Run R Script"{[Name="DTrpartEval"]}[Value],
      #"Kept Last Rows" = Table.LastN(DTrpartEval1, 1)
in
     #"Kept Last Rows"

Поэтому в Power Query мы создаем новый пустой запрос:

Затем в вкладке «Главная» -> «Запрос» нажмите «Advanced Editor».

Затем просто скопируйте и наложите M-код, который мы написали выше, чтобы создать функцию с параметрами.

Наконец, просто измените имя функции.

Мы попытались подготовить два разных набора данных (данные о Титанике и раке) и посмотреть результат оценки

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

Таким образом, мы создали среду для обучения развития для задачи классификации.

No Comments

Add a Comment