【问题标题】:h2o mojo predict in R ShinyR Shiny 中的 h2o mojo 预测
【发布时间】:2018-08-30 20:55:12
【问题描述】:

我想我已经用尽了整个互联网来寻找关于在 RShiny 中实施 h2o mojo 模型以进行预测的示例/答案。我们创建了一堆模型,并希望在用户输入值的 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"))

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

【问题讨论】:

  • 您是否尝试过先在控制台中运行模型?这看起来像是一个 h20 问题,而不是一个闪亮的问题,但您需要发布您的数据样本和您正在使用的任何其他代码,以便在任何人真正能够给您一个全面的答案之前它是可重现的。谢谢:)
  • 谢谢,我一直在尝试创建一个没有要加载的公司数据的干净版本。明天完成。我们可以使用二进制版本让模型运行良好,但控制台或非 mojo 无法找到它的 mojo!

标签: r rstudio h2o


【解决方案1】:

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

【讨论】:

    【解决方案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 集群内存中。

    【讨论】:

    • 非常感谢艾琳。我们会试一试,因为看起来这可能是前进的方向。迄今为止,我们一直在使用二进制模型,但是当我们从 NTT 迁移到 AWS 时,首选是 mojo,因此我们可以解决构建版本与部署版本的问题。谢谢,我会告诉你我们的进展情况。
    • 嗨 Erin,我们似乎已经取得了一些进展,即 json 可以正常创建,但我们现在看到以下错误消息....“无法找到或加载主类 water.util .H2OP预测器“
    • 嗨。我们设法让这个错误消失并有一个预测出来,这真是太感谢了!关键是 bin toJSON 并使用来自stackoverflow.com/a/47784930/5451344 的代码。但是,我们现在似乎无法在模型中包含值包含空格或 & 符号的因素。我们已经尝试了所有方法来逃避它们,但无济于事......有什么想法吗?谢谢,
    • 从代码df截断: 1"
    • 我们似乎通过在带有空格的字符串周围引入 '' 解决了这个问题,因此“LONDON & SE”变成了“'LONDON & SE'”。到目前为止,这已经奏效了!
    猜你喜欢
    • 2019-07-20
    • 2020-04-04
    • 2018-10-31
    • 2020-03-18
    • 2021-06-08
    • 2017-10-15
    • 1970-01-01
    • 2017-09-04
    • 2019-06-08
    相关资源
    最近更新 更多