Criando aprendizado de máquinas Desenvolvimento e ambiente de produção com Power BI – Parte 2

No último post, expliquei como podemos criar uma função com o objetivo de parametrizar o processo de aprendizagem da máquina. Neste post, vou explicar como conseguimos criar um ambiente de Desenvolvimento e Produção.

 

Criar ambiente diferente no Power Query

Para criar um novo ambiente, no Power Query, criei dois grupos principais um para “Desenvolver” e o outro para “Produção”.  Para criar um grupo diferente, clique com o botão direito do mouse na janela de Consulta e, em seguida, crie dois grupos separados.

 

Desenvolvimento (teste e treinamento) – “Develop (Test and Train)”

Primeiro, crio uma função para treinar um modelo e obter o resultado da avaliação. Neste post, vou mostrar como eu criei “rpart” um algoritmo de árvore de decisão e “knn” para classificação.

Primeiro, alguns códigos R para treinar modelos e também avaliar o algoritmo.

para “rpart” eu tenho:

Modelo de treinamento para rpart:

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")

 

Modelo de teste

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)

Seguimos as etapas do última post, para criar uma função e passar os parâmetros como “dataset” para treinamento, split porcentagem , o column name para a previsão.

O código M para ter uma função com parâmetros no Power query para treinar e mostrar o resultado do algoritmo rpart está apresentado abaixo:

 

 
(#"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"

então, no Power Query, crio uma nova consulta em branco (veja a figura):

Na aba Home  -> Query part, click on the “Advanced Editor”.

 

Então, basta copiar e soltar o código M que escrevemos acima para criar uma função com parâmetros.

Basta alterar o nome da função.

 

Treinaremos dois conjuntos de dados diferentes (dados de titanic e câncer) e veremos o resultado da avaliação

 

Como você pode ver em figuras acima, chamo a função para diferentes conjuntos de dados com o objetivo de classificação.

Criamos, um ambiente para treinamento de desenvolvimento para a classificação.

 

Por enquanto é isso, até a próxima.

 

fonte: radacad

 

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *