XGBoost Python 패키지 소개
XGBoost Python 패키지 소개
xgboost 패키지는 Python에서 기본 인터페이스, scikit-learn 인터페이스, dask 인터페이스까지 3가지 인터페이스를 제공해요. 학습 데이터를 다양한 형식으로 로드할 수 있고, DMatrix 객체로 관리해 학습·예측에 활용해요.
설치 확인
설치 후 Python에서 정상 동작하는지 확인해요.
import xgboost as xgb
데이터 인터페이스
XGBoost Python 모듈은 CPU·GPU 데이터 구조를 포함한 다양한 데이터 형식에서 데이터를 로드해요. 입력 데이터는 DMatrix 객체에 저장돼요.
- NumPy 배열을 DMatrix로 로드:
data = np.random.rand(5, 10) # 5 entities, each contains 10 features
label = np.random.randint(2, size=5) # binary target
dtrain = xgb.DMatrix(data, label=label)
- scipy.sparse 배열을 DMatrix로 로드:
csr = scipy.sparse.csr_matrix((dat, (row, col)))
dtrain = xgb.DMatrix(csr)
- Pandas 데이터프레임을 DMatrix로 로드:
data = pandas.DataFrame(np.arange(12).reshape((4,3)), columns=['a', 'b', 'c'])
label = pandas.DataFrame(np.random.randint(2, size=4))
dtrain = xgb.DMatrix(data, label=label)
- DMatrix를 XGBoost 바이너리 파일로 저장:
dtrain.save_binary('train.buffer')
- 결측값을 DMatrix 생성자에서 기본값으로 대체:
dtrain = xgb.DMatrix(data, label=label, missing=np.NaN)
- 필요 시 가중치 설정:
w = np.random.rand(5, 1)
dtrain = xgb.DMatrix(data, label=label, missing=np.NaN, weight=w)
파라미터 설정
XGBoost는 파라미터를 쌍(pair) 리스트나 딕셔너리로 설정할 수 있어요.
param = {'max_depth': 2, 'eta': 1, 'objective': 'binary:logistic'}
param['nthread'] = 4
param['eval_metric'] = 'auc'
# 평가 메트릭을 여러 개 지정할 수도 있어요
param['eval_metric'] = ['auc', 'ams@0']
# 검증셋을 지정해 성능을 지켜보기
evallist = [(dtrain, 'train'), (dtest, 'eval')]
학습
모델 학습에는 파라미터 리스트와 데이터셋이 필요해요.
num_round = 10
bst = xgb.train(param, dtrain, num_round, evallist)
학습이 끝나면 모델을 저장하고 예측에 쓸 수 있어요. xgb.train에 검증셋(evallist)을 넘기면 학습 중 평가 메트릭을 로그로 확인할 수 있어요.
더 알아보기
- XGBoost 설치 — 설치 가이드
- XGBoost Python API — API 참조
- Distributed XGBoost with Dask — 분산 학습