본문 바로가기
스터디/머신러닝

Pycaret을 사용한 데이터 분석

by ag_zero 2021. 11. 1.
728x90

Pycaret

pycaret이란 AutoML을 하게 해주는 파이썬 라이브러리이다.

기존에 있던 Scikit-learn, XGBoost, LightGBM, spaCy 등 여러가지 머신러닝 라이브러리를 ML High-Level API로 제작했다. 단 몇 줄로 데이터 분석 및 모델 성능 비교, Log를 생성까지 가능하다.

 

AutoML(오토ML) 이란?

데이터 성격에 맞게 자동으로 데이터 분석 모델을 추천해주는 Auto Machine Learning 기법

AutoML(오토ML) 장점

  • 인공지능 분석 모델을 학습하기 위해 데이터에서 중요한 특징(feature)을 선택하고 인코딩하는 방식에 대한 특징 엔지니어링(feature engineering) 자동으로 추출한다.
  • 인공지능 모델 학습에 필요한 사람의 설정들, 하이퍼파라미터를 자동으로 탐색해 주는 것이다.
  • 인공지능 모델의 구조 자체를 더 효율적인 방향으로 찾아주는 아키텍처 탐색이다.

 

pycaret에서 제공하는 기능

  • Classification
  • Regression
  • Clustering
  • Anomaly Detection
  • Natural Language Processing

1. pycaret설치

pip install pycaret

주피터 노트북에서 위의 코드만 쳐도 된다는데 나는 그렇지 않았다...

 

pycaret 설치 에러 (pycaret install error)

Uninstalling MarkupSafe-1.1.1:

No module named 'pycaret'으로 데이터셋을 불러올 수 없었다.

이것 저것 다 시도해 봤는데 아래의 방법으로 설치를 성공할 수 있었다.

- 아나콘다 프롬프트를 관리자 권한으로 실행

- 아래의 코드 입력

pip install pycaret --user

어마어마한 WARNING이 나왔지만 다행히 설치가 완료 되었다!

 

 

 

2. 데이터 준비 ( setup ) _ 다이아 몬드 선택 예제

from pycaret.datasets import get_data 
dataset = get_data('diamond')

 

 

3. 데이터 분할

 9 :1로 훈련 데이터, 테스트 데이터 분할

data = dataset.sample(frac=0.9, random_state=786) 
data_unseen = dataset.drop(data.index) 
data.reset_index(drop=True, inplace=True) 
data_unseen.reset_index(drop=True, inplace=True) 
print('Data for Modeling: ' + str(data.shape)) 
print('Unseen Data For Predictions: ' + str(data_unseen.shape))

Data for Modeling: (5400, 8)

Unseen Data For Predictions: (600, 8)

 

4. 모델 환경 설정

분석 모델을 돌리기 전에 종족 변수 (y, Target)을 지정해줘야 한다.

pycaret은 독립변수(x, factor)의 유형을 자동으로 지정해준다.

from pycaret.regression import * 
exp_reg101 = setup(data = data, target = 'Price', session_id=123)

 블랭크 박스를 클릭하고 enter 키를 누르면 아래와 같은 항복을 확인할 수 있다.

 

 

5. 데이터 셋에 알맞은 알고리즘을 추천하는 코드를 실행

추천 방식은 각 알고리즘 결과의 MAE, MSE, RMSE, R2, RMSLE, MAPE 점수 들을 비교해 가장 퍼포먼스가 좋게 나오는 모델에 하이라이트 해준다.

best = compare_models(exclude = ['ransac'])

 추천 상위 기준은 R2의 점수가 높은 순에서 낮은 순으로 (highest to lowest) 정렬된다.

  • R2 점수가 기준인 것이 default이지만 compare_models(sort = 'RMSLE') sort 방법을 사용하면 비교 기준을 바꿀 수 있다.
  • 기존 비교 모델들의 개수는 20가지이지만 compare_models(fold = 5) 코드를 사용하면 모델 갯수 조정이 가능하다. 모델 수를 줄이면 training run time을 감소시킬 수 있다.
  • 파라미터에 n_select = n 코드를 사용하시면 top n 모델을 반환한다.

 

6. 모델 생성

위에 추천된 모델 중 3가지를 지정해 각 모델 성능을 비교

  • Extra Trees Regressor (et)
  • Extreme Gradient Boosting (xgboost)
  • Random Forest Regressor (rf)

 

 

# Extra Trees Regressor (et)

Extra = create_model('et')

-create_model() 은 이모델 파라미터들을 cross validation과정을 통해 스스로 훈련시키고 검증한다.

 

- print 하면 파라미터의 정보를 알 수 있다. 

print(Extra)

 

 

# Extreme Gradient Boosting (xgboost)

xgboost = create_model('xgboost')

 

 

# Random Forest Regressor (rf)

rf = create_model('rf')

 

 

7. 모델 결과 시각화

plot_model(Extra)

- 예측 오차

plot_model(Extra, plot = 'error')

- 변수의 중요도

plot_model(Extra, plot='feature')

- 하이퍼 파라미터

evaluate_model(Extra)

 

 

 

 

 

 

 

참고

https://preservsun.tistory.com/67

'스터디 > 머신러닝' 카테고리의 다른 글

인공지능, 머신러닝, 딥러닝의 관계  (0) 2022.09.16
Catboost란?  (0) 2022.07.21
변수 선택 (Feature Selection)  (0) 2021.11.08