Aplicativo em R

Inicio

Esse Markdown é uma continuação do trabalho Regressao-Linear-para-prever-notas-IMbd-programa-o-em-R que tem por finalidade desenvolver um webApp usando da função de predição de notas.

Caso não tenha visto Acesse AQUI a publicação no Rpubs

Codigo em R

Os arquivos estão localizados no repositório github na pasta Rapp.

Para gerar o nosso aplicativos precisamos de dois passos:

Instalando o Pacote "Plumber":

library("plumber")

Feito isso, precisamos criar nosso aplicativo. Não entrarei em detalhes para explicar as funções usadas, mas basicamente usaremos POST na rota criada com nosso plumber.

Criemaos um arquivo chamado meuscript.R com uma função criada a partir do nosso modelo de regressão linear vista no código em R:

#* @post /prever
funcao_que_preve <- function(orcamento, ano) {
  d <- data.frame(budget = as.numeric(orcamento), year = as.numeric(ano))
  predict(modelo, newdata = d)
}

Note que precisamos rodar o modelo da função lm() No arquivo primeiroAPI.R temos:

library(tidyverse)

prime <- ggplot2movies::movies

dados <- ggplot2movies::movies %>% 
  filter(!is.na(budget), budget > 0) %>% 
  select(title, year, budget, rating) %>% 
  arrange(desc(year))

modelo <- lm(rating ~ budget + year, data = dados)

Temos os modelo pronto. Agora importamos o Plumber: library("plumber") Caso não tenha instalado use a função install.packages("plumber")

p <- plumber::plumb('meuscript.R')
p$run(port = 8888)

Agora seu R está ocupado e alimentando o aplicativo com dados. Mas isso não é o suficiente, precisamos alimentar a funcao_que_preve() no arquivo meuscript.R.

Todo o processo será um app Local. Você pode acessar a interface gerada pelo plumber através do endereço que o próprio R retorna.

Temos então: Note que no meu caso tem a função GET, que não abordamos, e nem rodamos nesse exemplo, ela não é importante para o nosso exemplo.

Alimentando a funcao_que_preve()

Para teste usaremos um aplicativo para google chrome chamado POSTMAN

Instale o aplicativo no navegador pelo google play. A interface dele é bem simples. No Aplicativo, selecione o tipo POST, insira o endereço da rota do nosso aplicativo R

http://127.0.0.1:8888/prever

E na aba body, insira o código a seguir:

{
    "orcamento": 234230,
    "ano": 2000
}

O código vai adicionar a nossa função o orçamendo e o ano de interesse. Aperte o botão "SEND" Temos o resultado:

[
    6.0672
]

Agora sabemos que nosso APP está funcionando e retornando o valor esperado.

Criando um front-end

Para o front end usaremos o Node.js e editamos com o Atom

Você pode baixar na pasta nodejsExemple do repositorio aqui

Pelo terminal de comando vá até a pasta e execute o comando: npm install

Obs: Precisa ter instalado o node.JS

Depois execute o comando npm run dev

Assim o aplicativo irá rodar com o ip local na porta 3000

       Local: http://localhost:3000
    External: http://10.0.0.11:3000
 ----------------------------------
          UI: http://localhost:3001
 UI External: http://10.0.0.11:3001

Pronto, nosso app está rodando na rede local. Voce pode acessar pelo seu celular através do IP External e na maquina através Local.