H闪耀在R Shiny中预测

时间:2018-03-21 16:12:04

标签: r rstudio h2o

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

  

警告:checkForRemoteErrors出错:6个节点产生错误;第一   错误:没有方法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"))

任何人都可以帮忙解决一些问题吗? 谢谢, 西沃恩

2 个答案:

答案 0 :(得分:2)

这不是一个闪亮的问题。该错误表示您正在尝试在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()没有为您提供正确的格式,那么您可以使用我在此帖here中编写的函数手动从data.frame创建JSON字符串。

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

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

答案 1 :(得分:0)

以下工作现在使用前两行的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))