이번 포스팅에는 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)
'Data Science > Pandas' 카테고리의 다른 글
Pandas로 datetime 다루기 (0) | 2023.09.04 |
---|---|
데이터 분석 및 학습 (전체 과정) (0) | 2023.09.03 |
결측치 처리 - KNNImputer (0) | 2023.09.01 |
Confusion Matrix - 혼동행렬 (0) | 2023.09.01 |
PCA - 차원 축소 (0) | 2023.08.31 |