h2o python H2ODataFrame应用引发错误" ValueError:unimpl bytecode instr:LOAD_CONST"

时间:2017-12-07 19:01:57

标签: h2o

使用h2o python api并使用H2ODataFrame引发错误

  

ValueError:unimpl bytecode instr:LOAD_CONST

尝试在框架上使用apply方法时。

这里讨论的框架如下:

predict     0_good      1_bad
0_NoDenial  0.999593    0.000407184
0_NoDenial  0.999571    0.000428798
0_NoDenial  0.998374    0.00162572
0_NoDenial  0.999343    0.000657361
0_NoDenial  0.999307    0.000693177
0_NoDenial  0.999895    0.000104678
0_NoDenial  0.999495    0.000504838
0_NoDenial  0.999627    0.000373012
0_NoDenial  0.997075    0.00292529
0_NoDenial  0.996358    0.00364194

<class 'h2o.frame.H2OFrame'>

引发错误的代码如下:

preds['predict'] = preds['1_bad'].apply(lambda x: '1_bad' if x > custom_thresh else '0_good', axis=1)

完整错误如下:

/home/mapr/anaconda2/lib/python2.7/site-packages/h2o/frame.pyc in apply(self, fun, axis)
   3034         assert_is_type(fun, FunctionType)
   3035         assert_satisfies(fun, fun.__name__ == "<lambda>")
-> 3036         res = lambda_to_expr(fun)
   3037         return H2OFrame._expr(expr=ExprNode("apply", self, 1 + (axis == 0), *res))
   3038 

/home/mapr/anaconda2/lib/python2.7/site-packages/h2o/astfun.pyc in lambda_to_expr(fun)
    133     code = fun.__code__
    134     lambda_dis = _disassemble_lambda(code)
--> 135     return _lambda_bytecode_to_ast(code, lambda_dis)
    136 
    137 def _lambda_bytecode_to_ast(co, ops):

/home/mapr/anaconda2/lib/python2.7/site-packages/h2o/astfun.pyc in _lambda_bytecode_to_ast(co, ops)
    147         body, s = _opcode_read_arg(s, ops, keys)
    148     else:
--> 149         raise ValueError("unimpl bytecode instr: " + instr)
    150     if s > 0:
    151         print("Dumping disassembled code: ")

ValueError: unimpl bytecode instr: LOAD_CONST

我之前从未见过这种错误,快速的谷歌搜索没有说明多少。有谁知道为什么会这样,有什么可以做的呢?感谢。

1 个答案:

答案 0 :(得分:3)

对于这种情况,您可能只想使用h2o ifelse()方法

(preds['1_bad'] < .0005).ifelse('good','bad')

或者如果您创建一个由您的阈值组成的新列并将其附加到原始帧,则可以执行

(preds['1_bad'] < preds['my_thresholds']).ifelse('good','bad')