在对h2o
数据框进行预测时,如何捕获未知值?
例如,在做类似的事情时:
model.predict(frame_in)
在h2o python api中,在模型进行预测时加载进度条,然后输出一系列列表,详细说明为每个模型预测特征的枚举类型看到的未知标签。例如
/home/mapr/anaconda2/lib/python2.7/site-packages/h2o/job.py:69: UserWarning:
Test/Validation dataset column 'feature1' has levels not trained on: [, <values>]
有没有办法让这组未知级别成为python对象?谢谢。
使用h2o MOJO
时,有一个名为getTotalUnknownCategoricalLevelsSeen()
的{{3}},但我在h2o python
文档中找不到这样的内容。
答案 0 :(得分:0)
结束暂时捕获stderr的警告输出。以下是相关摘录:
import contextlib
import StringIO
@contextlib.contextmanager
def stderr_redirect(where):
"""
Temporarily redirect stdout to a specified python object
see https://stackoverflow.com/a/14197079
"""
sys.stderr = where
try:
yield where
finally:
sys.stderr = sys.__stderr__
# make prediction on data
with stderr_redirect(StringIO.StringIO()) as new_stderr:
preds = est.predict(frame_in)
print 'Prediction complete'
new_stderr.seek(0)
# capture any warning output
preds_stderr = new_stderr.read()
然后使用正则表达式来过滤仅输出包含列名和未看到值列表的行,然后使用另一个正则表达式来过滤以获取列表(然后我删除空格和.split(',')
以获取python字符串list
个值)。也可以使用正则表达式从同一行获取列名,并将它们配对在元组列表中。
答案 1 :(得分:0)
你可能会考虑H2O的GLRM(广义低秩模型)。它可以归咎于缺失值。
http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/glrm.html