원자력발전소 상태 판단 경진대회

원자력 발전소 상태 판단 대회 도전 5일차! - by 솜장

2020.03.03 23:17 5,631 Views

먼저 lightGBM 모델을 사용하였습니다.

from lightgbm import LGBMClassifier, plot_importance
lgb2 = LGBMClassifier(n_estimators=2, learning_rate=0.001, max_depth=7,min_child_samples=48, random_state=4321)
lgb2.fit(X_train, y_train, verbose=2)

결과는!

 

이번에는 GridSearchCV를 활용하여 RandomForest의 최적의 파라미터를 찾아보았습니다.

 

머신러닝 bagging 앙상블 랜덤 포레스트(random forest)란?

머신러닝 앙상블에는 배깅(bagging), 보팅(voting), 부스팅(boosting)이 있습니다. 그 중 앙상블 bagging에 속한 랜덤 포레스트를 이번 포스팅에서 소개할까합니다. 이 random forest는 빠른 속도와 높은 예측 성..

lsjsj92.tistory.com

위의 링크를 참고하였습니다.

from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier
rf_param_grid = {
    'n_estimators' : [10, 30, 50, 70, 100],
    'max_depth' : [6, 8, 10, 12],
    'min_samples_leaf' : [3, 5, 7, 10],
    'min_samples_split' : [2, 3, 5, 10]
}
rf = RandomForestClassifier(random_state=0)
import time

strTime = time.time()
print("시작시간: ", strTime)
rf_grid = GridSearchCV(rf, param_grid=rf_param_grid, scoring='accuracy', n_jobs=-1, verbose = 1)
rf_grid.fit(X_train, y_train)
print("소요시간 : ", time.time() - strTime)

생각보다 너어어어무 오랜 시간이 걸려 한참 기다렸습니다.

는 .... 결국 Colab의 런타임 연결이 해제되고 어쩔수없이 시간상 변수를 줄여서 다시 시도해 보았습니다.

rf_param_grid = {
    'n_estimators' : [4, 6, 7, 8],
    'max_depth' : [7, 9],
    'min_samples_leaf' : [3, 5],
    'min_samples_split' : [2, 3]
}
print("최고 평균 정확도 {0:4f}".format(rf_grid.best_score_))


print("최고의 파라미터 : ", rf_grid.best_params_)

정확도가 낮지만 여러번의 삽질로 인하여 시간이 없어 일단 지금 나온 최적의 파라미터를 가지고 시도해보기로 했습니다.

model = RandomForestClassifier(random_state=0, n_estimators=rf_grid.best_params_['n_estimators'], max_depth=rf_grid.best_params_['max_depth'], min_samples_leaf=rf_grid.best_params_['min_samples_leaf'], min_samples_split=rf_grid.best_params_['min_samples_split'], verbose=1,  n_jobs=-1, warm_start=True)
model.fit(X_train, y_train)

결과는!

이번엔 n_estimators 만 200으로 바꾸어 해보았습니다.

model4 = RandomForestClassifier(random_state=0, max_depth=rf_grid.best_params_['max_depth'], min_samples_leaf=rf_grid.best_params_['min_samples_leaf'], min_samples_split=rf_grid.best_params_['min_samples_split'], n_estimators=200, warm_start=True)
model4.fit(X_train, y_train)

결과는!


출처 - 솜장 https://ideans.tistory.com/47

 

로그인이 필요합니다
0 / 1000
당쇠
2020.03.03 23:18

공유해주신 솜장님께 감사드립니다.