首页 文章

H闪耀在R Shiny中预测

提问于
浏览
1

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

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

有人可以提供一些帮助吗?谢谢,Siobhan

2 回答

  • 2

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

    这不是一个闪亮的问题 . 该错误表示您正在尝试在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 . 如果你're trying to score multiple records, you'必须遍历行 . 如果由于某种原因 toJSON() 没有给你正确的格式,那么你可以使用我在这篇文章here中编写的函数来手动从data.frame创建JSON字符串 .

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

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

相关问题