R Shiny 中的 h2o mojo 预测

h2o mojo predict in R Shiny

我想我已经用尽了整个互联网来寻找一个示例/答案来回答我关于在 RShiny 中实施 h2o mojo 模型进行预测的查询。我们已经创建了一堆模型,并希望在用户输入值的 RShiny 前端中预测分数。但是,使用以下代码来实现预测,我们得到了

的错误

Warning: Error in checkForRemoteErrors: 6 nodes produced errors; first error: No method asJSON S3 class: H2OFrame

dataInput <- dfName
dataInput <- toJSON(dataInput)

rawPred <- as.data.frame(h2o.predict_json(model= "folder/mojo_model.zip",  json = dataInput, genmodelpath = "folder/h2o-genmodel.jar"))

谁能帮忙指点一下? 谢谢, 西沃恩

这不是闪亮的问题。该错误表明您正在尝试在 H2OFrame(而不是 R data.frame)上使用 toJSON(),这将不起作用,因为 jsonlite 库不支持。

相反,您可以使用以下方法将 H2OFrame 转换为 data.frame:

dataInput <- toJSON(as.data.frame(dataInput))

我不能保证 toJSON() 会为 h2o.predict_json() 生成正确的输入,因为我还没有尝试过,所以你必须自己尝试一下。请注意,如果这是 1 行 data.frame,则唯一可行的方法是,因为 h2o.predict_json() 函数需要单行数据,编码为 JSON。如果您尝试对多条记录进行评分,则必须遍历这些行。如果由于某种原因 toJSON() 没有给你正确的格式,那么你可以使用我在 post here 中编写的函数从 JSON 字符串创建=33=]手动。

有一个 ticket open 可以创建 h2o.predict_json() 的更好版本,它将支持从 MOJO 对数据帧(多行)进行预测而无需转换为 JSON第一的。这样你就可以完全避免处理 JSON。

另一种方法是使用 H2O binary model 而不是 MOJO,以及标准的 predict() 函数。这里唯一的要求是模型必须加载到H2O集群内存中。

下面的作品现在使用前两行的 json 格式和 var 周围的单引号和空格。

df<- data.frameV1=1,V2=1,CMPNY_EL_IND=1,UW_REGION_NAME = "'LONDON & SE'" )
    dfstr <- sapply(1:ncol(df), function(i) paste(paste0('\"', names(df)[i], '\"'), df[1,i], sep = ':'))
    json <- paste0('{', paste0(dfstr, collapse = ','), '}')
    dataPredict <- as.data.frame(h2o.predict_json(model = "D:\GBM_model_0_CMP.zip", json = json, genmodelpath = "D:\h2o-genmodel.jar", labels = TRUE))