Data Science/Pandas

GridSearch를 이용한 model training

작은별._. 2023. 9. 1. 21:16
728x90

이번 포스팅에는 GridSearch 모듈을 사용하여 3가지의 모델을 학습해 보겠습니다. 


먼저, 아래와 같은 데이터를 활용하여 간단한 데이터 전처리 후, 모델에 SVR, RandomforestRegressor, XGBoostRegressor 모델에 GridSearchCV를 적용해 보겠습니다.

 

1. One-Hot Encoding

범주형 변수들을 더미 변수를 이용하여 적절하게 변환하였습니다.

 



2. GridSearchCV 적용

파라미터 후보들을 리스트로 넣어서 아래와 같은 결과를 얻었습니다. grid_svm의 속성 중, cv_results_를 출력해보니 아래와 같은 딕셔너리 형 데이터가 나오는 것을 확인할 수 있습니다. 이 데이터를 이용하여 점수가 제일 좋은 파라미터를 확인해 보도록 하겠습니다.

 


 

cv_results_ 속성들 중 params와 mean_test_score을 이용하여 데이터프레임으로 만든 후, 제일 좋은 점수와 파라미터가 가장 위에 오도록 정렬해 보았습니다. 

점수가 제일 좋은 파라미터는 GridSearchCV의 best_params_를 이용해서도 구할 수 있습니다.

 



3. 모델 학습

위에서 구한 가장 좋은 파라미터로 SVR을 학습한 후, 결정계수와  RMSE 값을 출력했습니다.

RandomForestRegressor와 XGBoostRegressor도 동일한 과정을 거친 후 결정계수와 RMSE 값을 출력했습니다.

 


 

위 결과, RMSE 값이 작고 결정계수가 가장 큰 XGBoost 모델이 가장 적합한 알고리즘으로 선정이 될 것 같네요!


한 가지 팁이 있다면 GridSearchCV에서 best_params_를 찾아서 다시 모델을 fit 하는 과정을 거쳤는데 아래와 같이 GridSearchCV의 best_estimator_ 속성을 이용한다면 모델을 재학습시킬 필요 없습니다.

 


 

위와 같이 best_estimator_의 score, predict와 SVR을 재학습하여 구한 score, predict가 같게 나오는 것을 확인할 수 있습니다.

 

 

출처

[데싸라면, 빨간색 물고기, 자투리코드] 파이썬 한권으로 끝내기: 데이터분석전문가(ADP) + 빅데이터분석기사 실기대비, 시대고시기획(2022)

728x90
반응형