Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 캐치카페
- programmers
- Docker
- 맥북
- Baekjoon
- 금융문자분석경진대회
- PYTHON
- 편스토랑 우승상품
- dacon
- Real or Not? NLP with Disaster Tweets
- 데이콘
- AI 경진대회
- leetcode
- 자연어처리
- 파이썬
- 백준
- 프로그래머스 파이썬
- hackerrank
- github
- ubuntu
- 코로나19
- 프로그래머스
- Git
- 우분투
- 편스토랑
- 더현대서울 맛집
- SW Expert Academy
- Kaggle
- ChatGPT
- gs25
Archives
- Today
- Total
솜씨좋은장씨
데이콘 X AI 프렌즈 온도추정 경진대회 도전 5, 6회차 본문
728x90
반응형
데이콘 온도추정 경진대회 도전 5, 6회차입니다.
첫번째 시도
Y18의 앞쪽 30분간의 없는 데이터를 Y06, Y09, Y12, Y16, Y17 의 평균으로 채워넣고
기상청 데이터는 X00, X07, X28, X31, X32 기온데이터, X11, X34 일일 누적 일사량
데이터를 사용하였습니다.
data_for_graph = train.loc[:, ['Y06', 'Y09', 'Y12', 'Y16', 'Y17']].dropna()
plt.figure(figsize=(20, 10))
plt.plot(data_for_graph)
import numpy as np
new_Y_18 = []
for i in range(len(data_for_graph['Y06'])):
new_Y_18.append(np.mean([data_for_graph['Y06'].iloc[i], data_for_graph['Y09'].iloc[i], data_for_graph['Y12'].iloc[i], data_for_graph['Y16'].iloc[i], data_for_graph['Y17'].iloc[i]]))
len(new_Y_18)
train.loc[:4319 ,['Y18']] = new_Y_18
X_train_Y18 = train.loc[:, ['X00', 'X07', 'X11','X28', 'X31', 'X32', 'X34']]
Y_train_Y18 = train['Y18'].astype('float64')
GridSearchCV를 활용하여 LGBMRegressor()의 최적의 파라미터를 구하였습니다.
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_Y18, Y_train_Y18)
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_Y18_model = LGBMRegressor()
lgb_param_grid = {
'n_estimators' : [300, 400, 500, 600, 700, 800, 900, 1000],
'max_depth' : [5, 10],
'learning_rate' : [0.001, 0.005, 0.007, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1]
}
best_lgb_param_Y18_model = get_best_params(lgb_for_best_Y18_model, lgb_param_grid)
X_test = test.loc[:, ['X00', 'X07', 'X11','X28', 'X31', 'X32', 'X34']]
lgb_with_best_params_for_predict_Y18_after80days = LGBMRegressor(learning_rate=0.01, max_depth=10, n_estimators=400)
lgb_with_best_params_for_predict_Y18_after80days.fit(X_train_Y18, Y_train_Y18)
predict = lgb_with_best_params_for_predict_Y18_after80days.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_05_1.csv", index=False)
결과
두번째 시도
두번째는 모든 기상청 데이터를 활용해 보았습니다.
Y18은 첫번째와 동일하게 Y18의 앞쪽 30분간의 없는 데이터를 Y06, Y09, Y12, Y16, Y17 의 평균으로 채워넣었습니다.
X_train_Y18 = train.loc[:, ['X00', 'X01', 'X02', 'X03', 'X04', 'X05', 'X06', 'X07', 'X08',
'X09', 'X10', 'X11', 'X12', 'X13', 'X15', 'X17', 'X18',
'X20', 'X21', 'X22', 'X23', 'X24', 'X25', 'X26', 'X27', 'X28',
'X29', 'X30', 'X31', 'X32', 'X33', 'X34', 'X35', 'X36', 'X37', 'X38',
'X39']]
Y_train_Y18 = train['Y18'].astype('float64')
best_lgb_param_Y18_model = get_best_params(lgb_for_best_Y18_model, lgb_param_grid)
X_test = test.loc[:, ['X00', 'X01', 'X02', 'X03', 'X04', 'X05', 'X06', 'X07', 'X08',
'X09', 'X10', 'X11', 'X12', 'X13', 'X15', 'X17', 'X18',
'X20', 'X21', 'X22', 'X23', 'X24', 'X25', 'X26', 'X27', 'X28',
'X29', 'X30', 'X31', 'X32', 'X33', 'X34', 'X35', 'X36', 'X37', 'X38',
'X39']]
lgb_with_best_params_for_predict_Y18_after80days = LGBMRegressor(learning_rate=0.1, max_depth=10, n_estimators=900)
lgb_with_best_params_for_predict_Y18_after80days.fit(X_train_Y18, Y_train_Y18)
predict = lgb_with_best_params_for_predict_Y18_after80days.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_06_1.csv", index=False)
결과
세번째 시도
이번엔 기상청 데이터에서 기온데이터만 사용해보았습니다.
Y18은 첫번째와 동일하게 Y18의 앞쪽 30분간의 없는 데이터를 Y06, Y09, Y12, Y16, Y17 의 평균으로 채워넣었습니다.
X_train_Y18 = train.loc[:, ['X00', 'X07', 'X28','X31', 'X32']]
Y_train_Y18 = train.loc[:, ['Y18']]
X_test = test.loc[:, ['X00', 'X07', 'X28','X31', 'X32']]
best_lgb_param_Y18_model = get_best_params(lgb_for_best_Y18_model, lgb_param_grid)
lgb_with_best_params_for_predict_Y18_after80days = LGBMRegressor(learning_rate=0.005, max_depth=5, n_estimators=700)
lgb_with_best_params_for_predict_Y18_after80days.fit(X_train_Y18, Y_train_Y18)
predict = lgb_with_best_params_for_predict_Y18_after80days.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_06_2.csv", index=False)
결과
네번째 시도
이번에는 Y06, Y07, Y09, Y10, Y11, Y12, Y15, Y16, Y17를 평균낸 값을 Y18로 사용해보았습니다.
기상청 데이터는 전체 다 사용해보았습니다.
data_for_graph2 = train.loc[:, ['Y06', 'Y07', 'Y09', 'Y10', 'Y11','Y12','Y15', 'Y16', 'Y17']].dropna()
plt.figure(figsize=(20, 10))
plt.plot(data_for_graph2)
import numpy as np
new_Y_182 = []
for i in range(len(data_for_graph2['Y06'])):
new_Y_182.append(np.mean([data_for_graph2['Y06'].iloc[i], data_for_graph2['Y07'].iloc[i], data_for_graph2['Y09'].iloc[i], data_for_graph2['Y10'].iloc[i], data_for_graph2['Y11'].iloc[i],data_for_graph2['Y12'].iloc[i], data_for_graph2['Y15'].iloc[i],data_for_graph2['Y16'].iloc[i], data_for_graph2['Y17'].iloc[i]]))
len(new_Y_182)
train2.loc[:4319 ,['Y18']] = new_Y_182
X_train_Y182 = train2.loc[:, ['X00', 'X01', 'X02', 'X03', 'X04', 'X05', 'X06', 'X07', 'X08',
'X09', 'X10', 'X11', 'X12', 'X13', 'X15', 'X17', 'X18',
'X20', 'X21', 'X22', 'X23', 'X24', 'X25', 'X26', 'X27', 'X28',
'X29', 'X30', 'X31', 'X32', 'X33', 'X34', 'X35', 'X36', 'X37', 'X38',
'X39']]
Y_train_Y182 = train2['Y18'].astype('float64')
from sklearn.model_selection import GridSearchCV
def get_best_params2(model, params):
grid_model = GridSearchCV(model, param_grid=params, scoring='neg_mean_squared_error', cv=5)
grid_model.fit(X_train_Y182, Y_train_Y182)
rmse = np.sqrt(-1* grid_model.best_score_)
print('최적 평균 RMSE 값:', np.round(rmse, 4))
print('최적 파라미터:', grid_model.best_params_)
return grid_model.best_estimator_
best_lgb_param_Y18_model = get_best_params2(lgb_for_best_Y18_model, lgb_param_grid)
X_test = test.loc[:, ['X00', 'X01', 'X02', 'X03', 'X04', 'X05', 'X06', 'X07', 'X08',
'X09', 'X10', 'X11', 'X12', 'X13', 'X15', 'X17', 'X18',
'X20', 'X21', 'X22', 'X23', 'X24', 'X25', 'X26', 'X27', 'X28',
'X29', 'X30', 'X31', 'X32', 'X33', 'X34', 'X35', 'X36', 'X37', 'X38',
'X39']]
lgb_with_best_params_for_predict_Y18_after80days = LGBMRegressor(learning_rate=0.05, max_depth=10, n_estimators=1000)
lgb_with_best_params_for_predict_Y18_after80days.fit(X_train_Y182, Y_train_Y182)
predict = lgb_with_best_params_for_predict_Y18_after80days.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_06_3.csv", index=False)
결과
'DACON > AI프렌즈 시즌1 온도 추정 경진대회' 카테고리의 다른 글
데이콘 X AI 프렌즈 온도추정 경진대회 도전 7, 8회차 (0) | 2020.03.21 |
---|---|
데이콘 X AI 프렌즈 온도추정 경진대회 도전 4회차 (0) | 2020.03.17 |
데이콘 X AI 프렌즈 온도추정 경진대회 도전 3회차 (0) | 2020.03.14 |
데이콘 X AI 프렌즈 온도추정 경진대회 도전 2회차 (0) | 2020.03.13 |
데이콘 X AI 프렌즈 온도추정 경진대회 도전 1회차 (0) | 2020.03.12 |
Comments