h2o Steam Prediction Servlet不接受python脚本中的字符值

时间:2017-05-26 15:18:56

标签: h2o

我正在使用Steam尝试使用python预处理脚本构建预测服务。当python将已清理的数据传递给

中的预测服务时
variable:value var2:value2 var3:value3

格式(如Spam Detection Example所示)我得到了

ERROR PredictPythonServlet - Failed to parse
来自服务的

错误。当我查看PredictPythonServlet.java文件时,似乎只使用strMapToRowData函数,该函数假定输入字符串中的每个值都是一个数字:

for (String p : pairs) {
    String[] a = p.split(":");
    String term = a[0];
    double value = Float.parseFloat(a[1]);
    row.put(term, value);
  }

是否不允许以此格式发送字符值?如果有,是否有办法让PredictPythonServlet文件使用已定义但从未使用过的csvToRowData函数?我不想对我的模型使用One-Hot编码,因此能够传递实际的字符串表示将是理想的。

此外,我传递了模型pojo文件中为分类变量找到的数字表示,并收到错误:

hex.genmodel.easy.exception.PredictUnknownTypeException: Unexpected object type java.lang.Double for categorical column home_team

所以看起来服务需要一个字符串,但我无法弄清楚如何将它传递给实际的模型。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

预测服务使用EasyPredictModelWrapper,它只能使用底层模型使用的内容。这里不清楚你使用的模型,但大多数使用数值浮点值。在for循环代码片段中,您可以看到该数字必须是浮点数。