XGBoost 튜닝 - 2
Data Analyst

빅데이터 관련 자료/Dacon

XGBoost 튜닝 - 2

carpe08 2021. 9. 29. 18:15
320x100
320x100

XGBoost 파라미터중 과적합을 방지하는 gamma, max_depth, subsample 3가지 파라미터를 튜닝 해보도록 하겠습니다.

# X에 학습할 데이터를, y에 목표 변수를 저장해주세요

X = train.drop(columns=['index','quality'])
y = train['quality']

# XGBoost의 하이퍼 파라미터의 범위를 dictionary 형태로 지정해주세요
## Key는 XGBoost hyperparameter이름이고, value는 탐색할 범위 입니다.

xgb_parameter_bounds = {
		'gamma':(0,10),
        'max_depth':(1,3),
        'subsample':(0.5,1)
        }
        
# 함수를 만들어주겠습니다.
# 함수의 구성은 다음과 같습니다.
# 1. 함수에 들어가는 인자 = 위에서 만든 함수의 key값들
# 2. 함수 속 인자를 통해 받아와 새롭게 하이퍼파라미터 딕셔너리 생성
# 3. 그 딕셔너리를 바탕으로 모델 생성
# 4. train_test_split을 통해 데이터 train-valid 나누기
# 5 .모델 학습
# 6. 모델 성능 측정
# 7. 모델의 점수 반환

def xgb_bo(gamma,max_depth, subsample):
	xgb_params={
    	'gamma':int(round(gamma)),
        'max_depth':int(round(max_depth)),
        'subsample':int(round(subsample)),
        }
    xgb = XGBClssifier(**xgb_params)
        
    X_train,X_Valid,y_train,y_valid = train_test_split(X,y,test_size=0.2,)
    
    xgb.fit(X_train,y_train)
    score = accuracy_score(y_valid,xgb.predict(X_valid)
    return score
    
# 이제 Bayesian Optimization을 사용할 준비가 끝났습니다.
# "BO_xgb"라는 변수에 Bayesian Optimization을 저장해보세요    

BO_xgb = BayesianOptimization(f=xgb_bo, pbounds=xgb_parameter_bounds,random_state=0)# Bayesian Optimization을 실행해보세요

# Bayesian Optimization을 실행해보세요
BO_xgb.maximize(init_points=5, n_iter=5)

# 튜닝된 파라미터를 바탕으로 test 데이터 셋 예측
#학습

xgb_tune = XGBClassifier(gamma=4.376, max_depth=3, subsample=0.9818)
xgb_tune.fit(X,y)


#예측

pred = xgb_tune.predict(test.drop(columns=['index']))

#정답파일 내보내기

sub = pd.read_csv('data/sample_submission.csv')
sub['quality'] = pred
sub.to_csv('tune_xgb.csv',index = False)

.
320x100
320x100

'빅데이터 관련 자료 > Dacon' 카테고리의 다른 글

정형 데이터 분석 파이프라인 - (2)  (0) 2021.10.13
정형 데이터 분석 파이프 라인 (1)  (0) 2021.10.12
XGBoost 튜닝  (0) 2021.09.28
Bayesian Optimization 실습  (0) 2021.09.27
Bayesian Optimization 복습  (0) 2021.09.27