관리 메뉴

솜씨좋은장씨

데이콘 X AI 프렌즈 온도추정 경진대회 도전 3회차 본문

DACON/AI프렌즈 시즌1 온도 추정 경진대회

데이콘 X AI 프렌즈 온도추정 경진대회 도전 3회차

솜씨좋은장씨 2020. 3. 14. 02:54
728x90
반응형

데이콘 온도추정 경진대회 도전 3회차 입니다.

 

[공공] AI프렌즈 시즌1 온도 추정 경진대회

출처 : DACON - Data Science Competition

dacon.io

오늘은 lightGBM 모델을 사용하여 제출해 보았습니다.

 

[Ensemble] Colab에서 LightGBM 사용하기!

원자력 발전소 상태판단 알고리즘을 도전해보면서 머신러닝을 공부하며 Gradient Boosing알고리즘 중의 하나인 LightGBM 알고리즘을 알게되었고 DACON KB 금융문자분석경진대회에서도 수상자들이 사용했다는 것을..

somjang.tistory.com

먼저 Colab에 LightGBM을 설치해주었습니다.

 

데이터는 2회차와 동일하게 3일치의 기상청 측정데이터, Y18 센서 데이터를 사용하였습니다.

 

기상청 측정 데이터는 기온, 일일 누적 일사량을 사용하였습니다.

data = train.loc[:, ['X00', 'X07', 'X11','X28', 'X31', 'X32', 'X34', 'Y18']].dropna()
data

X_train = data.loc[:, ['X00', 'X07', 'X11', 'X28', 'X31', 'X32', 'X34']]
Y_train = data['Y18']

X_train.shape, Y_train.shape

X_test = test.loc[:, ['X00', 'X07', 'X11','X28', 'X31', 'X32', 'X34']]
X_test.shape

 

필요한 라이브러리를 import 합니다.

from lightgbm import LGBMClassifier, LGBMRegressor
from sklearn.model_selection import GridSearchCV

 

첫번째 제출

lgb = LGBMRegressor(n_estimators=100, max_depth=5, learning_rate=0.05)
lgb.fit(X_train, Y_train)

predict = lgb.predict(X_test)
predict_labels = predict


ids = list(test['id'])
print(len(ids))

submission_dic = {"id":ids, "Y18":predict_labels}
submission_df = pd.DataFrame(submission_dic)
submission_df.to_csv("dacon_temp_sub_03_1.csv", index=False)

결과

 

결과가 원하는 대로 나오지 않아서 파라미터를 최적화 하는 방법을 찾던 중

 

[공공] 버스 운행시간 예측

출처 : DACON - Data Science Competition

dacon.io

작년에 열렸던 제주도 버스 운행시간 예측대회에서 3등한 코드에서 괜찮은 코드를 발견했습니다.

from sklearn.model_selection import GridSearchCV

def get_best_params(model, params):
    grid_model = GridSearchCV(model, param_grid=params, scoring='neg_mean_squared_error', cv=5)
    grid_model.fit(X_train, Y_train)
    rmse = np.sqrt(-1* grid_model.best_score_)
    print('최적 평균 RMSE 값:', np.round(rmse, 4))
    print('최적 파라미터:', grid_model.best_params_)
    
    return grid_model.best_estimator_

 

이걸 활용하여 최적의 파라미터를 찾아보았습니다.

lgb_for_best = LGBMRegressor()
lgb_param_grid = { 
    'n_estimators' : [50, 100, 200, 300, 400], 
    'max_depth' : [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60],
    'learning_rate' : [0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1]
    }
best_lgb_param = get_best_params(lgb_for_best, lgb_param_grid)

 

여기서 얻은 최적의 파라미터를 활용하여 결과를 도출해보았습니다.

  • learning_rate : 0.01
  • max_depth : 5
  • n_estimators : 400

두번째 제출

lgb_with_best_params = LGBMRegressor(learning_rate=0.01, max_depth=5, n_estimators=400)
lgb_with_best_params.fit(X_train, Y_train)

 

predict = lgb_with_best_params.predict(X_test)
predict_labels = predict


ids = list(test['id'])
print(len(ids))

submission_dic = {"id":ids, "Y18":predict_labels}
submission_df = pd.DataFrame(submission_dic)
submission_df.to_csv("dacon_temp_sub_03_3.csv", index=False)

결과

 

하나의 파일을 제출을 잘못하여 오늘은 두번밖에 제출을 하지 못했습니다.

 

하루의 세번밖에 제출하지 못하는게 아쉽지만 더 공부해보아야겠습니다.

 

읽어주셔서 감사합니다!

 

 

[공공] AI프렌즈 시즌1 온도 추정 경진대회

출처 : DACON - Data Science Competition

dacon.io

Comments