我在 R 中进行预测时也遇到了这个问题。我需要使用与版本无关的模型(POJO 或 MOJO),并且没有运行 h2o 集群是一个好处。
我认为,如果您将模型保存为 MOJO(此解决方法在 POJO 中不起作用),并且在调用 h2o.predict_json() 函数时不提供引发错误的变量,则模型将按预期工作。
我根据 .csv 文件的输入进行预测(回归)的代码可以总结为:
dataset <- read.csv(<filepath>)
dataset$error_column <- ""
dataset$prediction <- 0
dataset_good <- dataset[0,]
dataset_error <- dataset[0,]
variables <- c(<variable1>, <variable2>, <...>, <variableN>)
while (length(dataset[,1]>0){
# make predictions without feeding variables identified as problematic #
dataset$prediction <- setNames(unlist(h2o.predict_json(model = <model_path>,
json = toJSON(dataset[, setdiff(variables, unlist(strsplit(dataset$error_column, split="; ")))]))), "prediction")
# save good predictions in one table #
dataset_good <- rbind(dataset_good, dataset[!is.na(as.numeric(dataset$prediction)),])
# save errors in another dataset #
dataset_error <- rbind(dataset_error, dataset[is.na(as.numeric(dataset$prediction)),])
# identify problematic variable in message #
dataset_error$error_column <- paste(dataset_error$error_column,
substr(dataset_error$prediction, start = regexpr("\\(", dataset_error$prediction)+1,
stop = regexpr(",", dataset_error$prediction)-1 ), sep = "; ")
# rerun rows that generated errors #
dataset <- dataset_error
}
别忘了你需要 h2o-genmodel 和 MOJO。