728x90
이제 마지막으로 GridSearchCV를 사용하여 최적의 파라미터를 찾아 모델에 적용해보겠다.
from sklearn.model_selection import GridSearchCV
GridSearchCV를 import 해준다.
params = {
'learning_rate': [0.1, 0.01, 0.003],
'min_child_samples': [20, 30]
}
gs = GridSearchCV(estimator=model,
param_grid=params,
scoring= 'neg_mean_squared_error',
cv=k_fold)
LGBMRegressor에서 설정할 수 있는 learning_rate, min_child_samples 값을 적당하게 설정하고, GridSearchCV에 값을 초기화해준다.
gs.fit(X_train, y_train)
gs를 학습시켜준다.
gs.best_params_
{'learning_rate': 0.003, 'min_child_samples': 30}
학습하여 나온 결과를 토대로 최적의 파라미터를 확인하면 'learning_rate': 0.003, 'min_child_samples': 30 이 나온다.
model = lgb.LGBMRegressor(random_state=1234,n_estimators=1000, learning_rate=0.003, min_child_samples=30)
models = []
for train_idx, val_idx in k_fold.split(X_train):
x_t = X_train.iloc[train_idx]
y_t = y_train.iloc[train_idx]
x_val = X_train.iloc[val_idx]
y_val = y_train.iloc[val_idx]
models.append(model.fit(x_t, y_t, eval_set=(x_val, y_val), early_stopping_rounds=100, verbose = 100))
최적의 파라미터를 적용하여 model을 생성해주고, 미리 설정해두었던 k_fold 값에 따라 모델을 학습시켜준다.
preds = []
for model in models:
preds.append(model.predict(X_test))
학습된 모델들의 예측값을 preds에 넣어준다.
gridSearchGBM = submission.copy()
gridSearchGBM['box_off_num'] = np.mean(preds, axis=0)
submission을 gridSearchGBM에 복사해주고, 예측된 결괏값의 평균을 gridSearchGBM ['box_off_num']에 저장해준다.
pd.options.display.float_format = '{:.1f}'.format
print(featureLightGBM.tail())
title box_off_num
238 해에게서 소년에게 172238.8
239 울보 권투부 209268.0
240 어떤살인 1286869.1
241 말하지 못한 비밀 359618.3
242 조선안방 스캔들-칠거지악 2 124363.3
예측된 결과값을 확인해본다.
pd.reset_option('display.float_format')
gridSearchGBM.to_csv('gridSearchGBM.csv', index=False)
결과값을 csv 파일로 저장해준다.
728x90
'Artificial Intelligence > Machine Learning' 카테고리의 다른 글
[Machine Learning] 가짜 뉴스 분류 모델 - 데이터 전처리 (0) | 2021.03.04 |
---|---|
[Machine Learning] 가짜 뉴스 분류 모델 - 데이터 수집 및 확인 (0) | 2021.03.03 |
[Machine Learning] 영화 관객수 예측 모델 (4) (0) | 2021.02.23 |
[Machine Learning] 영화 관객수 예측 모델 (3) (0) | 2021.02.19 |
[Machine Learning] 영화 관객수 예측 모델 (2) (0) | 2021.02.18 |