Как развернуть модель с использованием API сантехника из CMD линии R? - PullRequest
1 голос
/ 17 мая 2019

Новый для использования API сантехник, пытаясь развернуть модель R, я сохранил модель R и тестовые данные (OneRecord).Запустив API сантехника из строки CMD, 127.0.0.1:8000 возвращает ошибку "{" error ": [" 500 - Внутренняя ошибка сервера "]}", и терминал показывает ошибку "simpleError in if (opts $ show.learner").output) identity else capture.output: аргумент имеет нулевую длину "

Мой код R

#plumb_test.R
library(plumber)
#Simple msg command
#* @apiTitle Plumber Example API

#* Echo back the input
#* @param msg The message to echo
#* @get /echo
function(msg=""){
  list(msg = paste0("The message is: '", msg, "'"))
}

#My Model
#* @get /run
function(){
  rf_prediction <- predict(readRDS("rf_unwrap.rds"), newdata = as.data.frame(readRDS("Test_data.Rds")))
  rf_prediction$data
}

R Код для запуска сантехника

library(plumber)
pr <- plumb("plumb_test.R")
pr$run(port=8000)

msg работает нормально

http://127.0.0.1:8000/echo?msg=hellohru

returns me

{"msg":["The message is: 'hellohru'"]}

Но моя модель возвращает

{"error":["500 - Internal server error"]}
in the terminal I am getting
> pr$run(port=8000)
Starting server to listen on port 8000
<simpleError in if (opts$show.learner.output) identity else capture.output: argument is of length zero>

Я запускаю из командной строки Windows следующим образом

C:\R\R-3.5.2\bin>r -f plumb_run.R

Все файлы были в папке bin (модель, тестdata, plumb R scripts)

Ожидая вывода прогноза, не уверен, что означает ошибка.

1 Ответ

1 голос
/ 17 мая 2019

загрузка библиотеки mlr вместе с сантехником и использование печати в функции, все работало

library(plumber)
library(mlr)
#My Model
#* @get /run
function(){
  print(predict(readRDS("rf_unwrap.rds"), newdata = as.data.frame(readRDS("Test_data.Rds")))$data)
}
...