Pycaret을 활용한 fastest한 예측 결과 도출하기(회귀 내용 일부 추가)
pycaret은 AutoML 패키지중의 하나로 ,
내장된 모든 머신러닝에 대해 학습 및 결과를 도출하여
튜닝 / 블렌딩 등의 다양한 편의성을 제공해주는 좋은 Tool이다.
일반적인 컴페티션에 참여할 때, 빠르게 전체적인 EDA 후에 꽤나 성능이 괜찮은 예측결과를 낼 수 있으나,
후반부로 갈수록 Customizing된 정교한 알고리즘(튜닝 및 기타 등등)에 의해 밀릴 수 있으므로
결과를 참조하는 정도의 기능으로만 활용하는것을 추천한다.(초반에는 빠르게 제출 가능)
우선 pycaret을 활용하기 위해서는 python 3.8 이하 버젼을 사용해야한다.
이미 3.9가 설치된 경우 , 가상환경에서 python을 3.8.x 버전으로 새로 설치해서 하는것을 권장한다.
pycaret은 크게 setup(전처리) - compares_model - (tune) - blend - final - predict
순으로 수행한다.
먼저 , 패키지를 불러온다.
from pycaret.classification import * # 분류 모델 기준
from pycaret.regression import * # 회귀 모델 기준
## 데이터에 따라 선택
1) setup(전처리)
setup(train , target = "Target")
### data는 target까지 같이 있는 train 그대로 사용 , target은 타겟 컬럼 지정 (텍스트로)
엔터를 쳐서 전처리 진행한다.
이때 silent = True 로 하면 엔터 수행없이 바로 진행
2) compare_models 활용을 통해 모델 비교
top3 = compare_models(n_select= 3, sort = "Accuracy")
### 상위 3개의 모델을 추출 , top2 , top4 , top5 모두 가능 (n_select 갯수만 맞추면됨)
### sort는 상위 모델을 결정하는 방식 , 안넣으면 default 값 설정
### 회귀분석은 sort = "RMSE" 또는 "MSE" 등의 값을 넣으면 된다. default는 "RMSE"이다.
3) blend_models
blended = blend_models(top3)
### top3로 받아온 모델을 앙상블(blending)한다.
4) finalize_model & predict_model로 최종 예측모델 만들기
final = finalize_model(blended)
### 위에서 blend한 결과 넣기
predict = predict_model(final , test)
위와 같이 최종 모델을 만든다. 이때 test 데이터는
최초의 setup에서 넣었던 train데이터의 feature(타겟값 제외)와 동일한 차원 및 동일한 전처리를 한것이어야함.
submission = pd.read_csv("sample_submission.csv")
### 제출양식 피일이 sample_submission.csv 아니면 해당되는 파일이름을 넣으면 됩니다.
submission["Target"] = prediction["Label"]
### target이 "Target"이 아닐 경우 , 해당되는 target 컬럼을 써주면 됨
submission.to_csv("submission_제출횟수_방법.csv" , index = False)
제출을 통해 fastest한 결과를 뽑아낸 후 추가적인 EDA 및 전처리 진행을 추천 한다.