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

Создание другой среды в 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-код, который мы написали выше, чтобы создать функцию с параметрами.

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

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


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