prediction - 预测 H2O 模型(管道工)-> 错误:java.lang.IllegalArgumentException:测试/验证数据集没有与训练集相同的列
问题描述
我有一个关于如何使用 Plumber 将训练有素的 H2O 模型投入生产的疑问。
我使用以下代码训练了模型,并将其导出到我的 PC 以与 Plumber 一起使用。
h2o.saveModel (model11_gbm_es2, path = "model11_gbm_es2")
我使用以下代码创建管道工文件并运行它。
# script name:
# plumber.R
library(plumber)
library(h2o)
h2o.init()
mywinmodel <- h2o.loadModel("GBM_model_R_1632666878843_1")
#' predict the success or failure with 'the 'GBM' model
#' @param iyear:numeric
#' @param country:numeric
#' @param region:numeric
#' @param natlty1:numeric
#' @param fe_distancia:numeric
#' @param fe_fe_vicinity:numeric
#' @param fe_INT_LOG:numeric
#' @param fe_INT_IDEO:numeric
#' @param fe_INT_ANY:numeric
#' @param fe_fe_attacktype1:numeric
#' @param fe_fe_nperps_tram:numeric
#' @param fe_fe_nperpcap_tram:numeric
#' @param fe_fe_nkill_tram:numeric
#' @param fe_fe_nkillter_tram:numeric
#' @param fe_fe_nwound_tram:numeric
#' @param fe_fe_nwoundte_tram:numeric
#' @param fe_fe_targtype1_retram:numeric
#' @param fe_fe_weaptype1_retram:numeric
#' @param fe_fe_trimestre:numeric
#' @param fe_fe_quincena:numeric
#' @get /predict
#' @serializer html
#' @response 200 Returns the class ('Yes' or 'No')
function (iyear,country,region,natlty1,fe_distancia,
fe_fe_vicinity,fe_INT_LOG,fe_INT_IDEO,fe_INT_ANY,
fe_fe_attacktype1,fe_fe_nperps_tram,
fe_fe_nperpcap_tram,fe_fe_nkill_tram,
fe_fe_nkillter_tram,fe_fe_nwound_tram,
fe_fe_nwoundte_tram,fe_fe_targtype1_retram,
fe_fe_weaptype1_retram,fe_fe_trimestre,
fe_fe_quincena) {
input_data_final <<- as.h2o(data.frame(iyear,country,region,natlty1,fe_distancia,
fe_fe_vicinity,fe_INT_LOG,fe_INT_IDEO,fe_INT_ANY,
fe_fe_attacktype1,fe_fe_nperps_tram,
fe_fe_nperpcap_tram,fe_fe_nkill_tram,
fe_fe_nkillter_tram,fe_fe_nwound_tram,
fe_fe_nwoundte_tram,fe_fe_targtype1_retram,
fe_fe_weaptype1_retram,fe_fe_trimestre,
fe_fe_quincena,stringsAsFactors = FALSE))
# and make sure they really are numeric
input_data_final <<- as.h2o(data.frame(t(sapply(input_data_final, as.numeric))))
# predict and return result
prediceme <<- h2o.predict(mywinmodel, newdata=input_data_final)
prediceme
}
在此之后,我提出了一个管道工的实例
library(plumber)
r <- plumb("plumber.R")
r$run(port = 8000)
但是当输入数据时,无论是通过网络环境还是通过控制台中的“curl”调用,我都会收到这个错误......
{"error":"500 - Internal server error","message":"Error: java.lang.IllegalArgumentException: Test/Validation dataset has no columns in common with the training set\r\n"}
我已经尝试修复它很长时间了,但我做不到。有人可以帮助我吗?我做错了什么?
太感谢了 !!!
解决方案
推荐阅读
- javascript - 如何返回 JSON 响应的特定部分?
- python-3.x - 无法检测到有效分数?如何解决?
- bioinformatics - 如何将配体与 PyMOL 中的蛋白质结合?
- kubernetes - 如何在 Helm Chart 中禁用 Gitlab webui 注册身份验证?(并且不使用 gitlab rails 控制台)
- node.js - NodeJs:如何解析发布请求正文
- r - 在 left_join R 中使用 paste0
- javascript - javascript数组的增量和减量
- python - 在客户端发送文本文件后,Python Socket Server 接收到乱码文本文件
- visual-studio-code - 使用 VsCode C++(Win10 SSH 连接到 Ubuntu 18.04)在右键单击或 F12 时不会出现“转到定义”
- java - java jar 的 hadoop jar 命令 - 性能评估