2017-12-07 1 views
1

h2o 데이터 프레임에서 예측을 수행 할 때 알 수없는 값을 어떻게 캡처합니까? 예를 들어교육받지 않은 값을 캡처하는 방법

, 같은 것을 할 때 다음 H2O 파이썬 API의

model.predict(frame_in) 

을, 진행률 표시 줄로드 모델은 예측하고 제작하는 동안 다음 일련의 목록이 출력된다 각각 볼 수있는 알 수없는 레이블을 자세히 모델 예측 특성의 열거 유형 중. 예 :

/home/mapr/anaconda2/lib/python2.7/site-packages/h2o/job.py:69: UserWarning: 
Test/Validation dataset column 'feature1' has levels not trained on: [, <values>] 

이 알려지지 않은 수준의 집합을 파이썬 개체로 가져 오는 방법이 있습니까? 감사.

h2o MOJO의 작업, getTotalUnknownCategoricalLevelsSeen()라는 java method있다,하지만 난 h2o python 문서에서이 같은 아무것도 찾을 수 없습니다.

답변

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(',') 파이썬 문자열 list 값을 얻으려면). regex를 사용하여 동일한 행에서 열 이름을 가져 와서 튜플 목록에서 쌍으로 사용할 수도 있습니다.

관련 문제