Я создал фиктивную модель, используя следующий код:
#get the data
data(Boston, package="MASS")
# train a model for median house price as a function of the other variables
bos_rf <- lm(medv ~ crim + indus + dis , data=Boston)
# save the model
saveRDS(bos_rf, "bos_rf.rds")
Теперь я хочу представить эту модель как API с использованием сантехника. Для этого мой код
# load as bos_rf.R
bos_rf <- readRDS("bos_rf.rds")
#* @param input_json JSON file
#* @post /score
function(input_json)
{
temp <- toJSON(input_json, auto_unbox = T)
data <- fromJSON(temp) %>% as.data.frame
data = data %>% mutate_all(as.numeric)
predict(bos_rf, data)
}
Над моим параметром стоит JSON, я действительно хочу сохранить его как фрейм данных. Я преобразую JSON в фрейм данных в функции
Затем я запускаю API, используя
# try API 1
#
dummy_model_api <- plumber::plumb("2_R_code_to_API.R")
dummy_model_api$run(host = '127.0.0.1', port = 8000)
API работает нормально, когда я вставляю JSON на портале Swagger, но когда я запускаю curl, используя следующие команды
$ curl "http://127.0.0.1:8000/score" -d "@test.JSON"
$ curl --data @test.json http://localhost:8000/score
Нет работы. Как мне напрямую пройти тест JSON в API, чтобы получить прогноз. Обратите внимание, что если я проверю функцию с помощью R, я получу прогноз. Пожалуйста, посоветуйте, как можно передать JSON или DF напрямую для скручивания запроса API и получить ответ против ручного копирования json / или определения входных данных API с каждой переменной по одной. Такой метод невозможен с сотнями переменных.
Как образец из этого JSON также может отражаться в теле чванства. то есть выше, когда открывается чванство, образец JSON уже находится в теле с некоторыми значениями и готов к выполнению.