2017-10-27 8 views
1

나는 Encoding: latin-1을 가지고 있고 ;으로 구분 된 팬더 데이터 프레임을 가지고 있습니다. 데이터 프레임은 매우 커서 size: 350000 x 3800입니다. 처음에는 sklearn을 사용하고 싶었지만 sklearn의 임의의 포리스트 나 GBM을 사용할 수 없도록 데이터 프레임에 값 (NAN values)이 누락되었습니다. 그래서 난 H2O's 데이터 집합의 훈련을위한 분산 임의의 숲을 사용해야했다. 가장 큰 문제는 h2o.H2OFrame(data) 일 때 데이터 프레임이 효율적으로 변환되지 않는다는 것입니다. 인코딩 옵션을 제공 할 수 있는지 확인했지만 문서에는 아무 것도 없습니다.팬더 데이터 프레임을 h2o 프레임으로 효율적으로 변환

누구에게이 아이디어가 있습니까? 어떤 단서라도 나를 도울 수 있습니다. 또한 NAN 값을 매우 효율적으로 처리 할 수있는 H2O와 같은 다른 라이브러리가 있는지 알고 싶습니다. 나는 우리가 컬럼을 전가 할 수 있다는 것을 알고 있지만 값이 없다면 내 컬럼이 다른 센서의 값이기 때문에 데이터 세트에서 그렇게해서는 안됩니다. 센서가 없다는 것을 의미합니다. 파이썬 만 사용할 수 있습니다.

+0

Xgboost는 누락 된 값을 완벽하게 다룰 수 있습니다. – CrazyElf

+0

@CrazyElf, 그래, 내가 xgboost에 대해 읽었지 만, 문제는 내가 소스 코드에서 빌드를 만들 수 없다. 왜냐하면 나는 직장에서 내 노트북에 자식이나 mingw를 설치할 수있는 관리자 권한이 없기 때문이다. 하지만 난 pip를 사용할 수 있으며, 불행히도 xgboost에 대한 pip 지원은 제거됩니다. – ayaan

+0

xgboost는 여기에서 설치할 수 있습니다 : http://www.lfd.uci.edu/~gohlke/pythonlibs/#xgboost 완벽하게 작동합니다. . – CrazyElf

답변

3
import h2o 
import pandas as pd 

df = pd.DataFrame({'col1': [1,1,2], 'col2': ['César Chávez Day', 'César Chávez Day', 'César Chávez Day']}) 
hf = h2o.H2OFrame(df) 

직면 한 문제는 데이터 세트의 NAN 수가 많기 때문에 먼저 처리해야합니다. 그렇게하는 데는 두 가지 방법이 있습니다.

  1. 는 단일로 NAN 교체 분명히 범위를 벗어난 값입니다. Ex. 기능이 0-1 사이에서 다를 경우 해당 기능에 대해 NAN을 모두 -1로 바꿉니다.

  2. NAN 값을 처리하려면 Imputer 클래스를 사용하십시오. 그러면 NAN이 해당 기능의 평균, 중간 또는 모드로 바뀝니다. 이 데이터에 누락 된 값의 많은 수는 당신이 변환의 효율성을 높이려면

+0

@ Anand CU. 나는 정확히 똑같은 일을하고 있었지만, 데이터 프레임의 크기가 크기 때문에 타입 변환이 효율적이지 않다고 생각하고 있습니다. – ayaan

+0

@ayaan 데이터 세트에 NAN이 너무 많습니까? 데이터 세트에서 NAN 값의 몇 퍼센트입니까? –

+0

네, 내 데이터 프레임의 약 40 %가 NAN – ayaan

1

, 내가 명시 적으로 열 유형 대신 H2O는 해석시키기의 NA 문자열을 지정하는 것이 좋습니다. 해석 할. 자열 목록을 NA s로 전달하고 컬럼 유형을 지정하는 사전을 H2OFrame() 메소드에 전달할 수 있습니다.

일반 "사용할 수 없음"(팬더에 사용자 지정 문자열이있는 NaN 값을 입력 함) 대신에 존재하지 않는 센서에 대한 사용자 지정 레이블을 만들 수도 있습니다. 자세한 내용은

import h2o  

col_dtypes = {'col1_name':col1_type, 'col2_name':col2_type} 
na_list = ['NA', 'none', 'nan', 'etc'] 

hf = h2o.H2OFrame(df, column_types=col_dtypes, na_strings=na_list) 

-http://docs.h2o.ai/h2o/latest-stable/h2o-py/docs/_modules/h2o/frame.html#H2OFrame

편집 : @ErinLeDell의 제안은 바로 당신에게 가장 큰 속도 향상을 줄 것이다 열 dtypes 및 NA 문자열을 지정하여 h2o.import_file()을 사용합니다.

+0

감사 드리며이를 알려 드리겠습니다. – ayaan

관련 문제