2016-10-10 10 views
1

스파 스 매트릭스 용 스토리지로 svm light 파일을 사용하고 있습니다.xgboost에서 Dmatrix가 svm 라이트 텍스트 파일을 너무 빨리로드하는 이유

시험 항목은 570,601,944

import xgboost as xgb 
dtrain = xgb.DMatrix(train_file) 

사용 21초와 31700108x54070 행렬위한

from sklearn.datasets import load_svmlight_file 
x_train, y_train = load_svmlight_file(train_file) 

방법보다 빠르게

가 7분 사용을 보여준다.

코드를 해킹하기 전에 누구나 대답 할 수 있습니까?

load_svmlight_file 함수를 향상시킬 제안이 있습니까?

대단히 감사합니다!

답변

2

Xgboost는 C++로 작성되었으며 ctypes를 사용하여 파이썬 패키지에 포장합니다. load_svmlight_file의 구현은 파이썬 코드를 가져 와서 c로 변환하는 cython으로 작성됩니다. 이상적으로 cython은 완벽한 c 코드를 생성하지만 때로는 c 프로그래머가 수행하는 것보다 더 나쁜 코드를 생성합니다.

scikit 사람들은 load_svmlight_file이 가능한 한 효율적이지 않으며 C++로 작성된 다른 라이브러리를 가리킨다 고 인정합니다.

이 구현은 Cython으로 작성되었으며 비교적 빠릅니다. 그러나 더 빠른 API 호환 로더는 다음에서 사용할 수 있습니다. https://github.com/mblondel/svmlight-loader