使用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
我之前从未见过这种错误,快速的谷歌搜索没有说明多少。有谁知道为什么会这样,有什么可以做的呢?感谢。
答案 0 :(得分:3)
对于这种情况,您可能只想使用h2o ifelse()
方法
(preds['1_bad'] < .0005).ifelse('good','bad')
或者如果您创建一个由您的阈值组成的新列并将其附加到原始帧,则可以执行
(preds['1_bad'] < preds['my_thresholds']).ifelse('good','bad')