머신러닝/Pycaret 활용

Pycaret을 활용한 fastest한 예측 결과 도출하기(회귀 내용 일부 추가)

Stevelee_HMC 2022. 8. 25. 06:37

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은 타겟 컬럼 지정 (텍스트로)

setup 수행 화면

엔터를 쳐서 전처리 진행한다.

이때 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"이다.

compare_models 결과

3) blend_models 

blended = blend_models(top3) 
### top3로 받아온 모델을 앙상블(blending)한다.

blend_models 결과

4) finalize_model & predict_model로 최종 예측모델 만들기 

final = finalize_model(blended)
### 위에서 blend한 결과 넣기

predict = predict_model(final , test)

위와 같이 최종 모델을 만든다. 이때 test 데이터는 

최초의 setup에서 넣었던 train데이터의 feature(타겟값 제외)와 동일한 차원 및 동일한 전처리를 한것이어야함.

 

Label이 predicton의 결과이다. (회귀/분류 같음)

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 및 전처리 진행을 추천 한다.