본문 바로가기
머신러닝 with Python

[머신러닝 with 파이썬] Pycaret이란? Pycaret을 활용한 머신러닝

by CodeCrafter 2023. 9. 24.
반응형

 

 이번에 알아볼 것은 pycaret이라는 라이브러리 입니다.

 

 이 라이브러린는 분석하고자하는 데이터에 대해 머신러닝 기법들을 하나씩 적용해서 비교하는 수고를 덜어버릴 수 있는 유용한 라이브러리 입니다.

 

 이를 통해 더 빠르고 효율적으로 데이터를 분석하고 예측할 수 있습니다.

 

 

1. Pycaret이란?

- Pycaret이란, Python 기반의 오픈 소스 머신러닝라이브러리 중 하나로, 머신 러닝 모델을 쉽게 구축하고 비교하며, 모델을 최적화하고 평가하는데 도움을 주는 도구입니다.

 

- 이를 활용해서, 데이터 과학자는 최소한의 코드 작성으로 다양한 머신러닝 모델을 탐색하고 최적화해볼 수 있습니다.

 

- Pycaret을 활용해서 머신러닝을 통해 구현되는 a) 분류, b) 회귀, c) 클러스터링, d) 이상치 탐지 등 다양한 문제에 대한 모델을 쉽게 빠르게 구축할 수 있는데요

 

바로 파이썬 코드를 활용한 예제를 통해서 어떠한 라이브러리인지 알아보겠습니다~

 

 

 

2. 예제 1 : Pycaret을 활용한 분류 - iris 데이터 활용

 

 

a) 먼저 Pycaret 패키지를 설치합니다. 이때 pycaret[analysis] 패키지를 같이 설치해주면, 분석간 pycaret이 활용하는 라이브러리들이 같이 설치되니 설치해줍니다.

1
2
!pip install pycaret
!pip install pycaret[analysis]
cs

 

b) 이제 pycaret 내에 필요한 라이브러리를 가져옵니다. 이번 예제에서는 pycaret에 내장되어있는 데이터를 활용하겠습니다. 사용될 데이터는 irir 데이터 입니다.

1
2
3
4
5
6
# 필요한 라이브러리를 가져옵니다
from pycaret.datasets import get_data
from pycaret.classification import *
 
# Iris 데이터를 로드합니다
data = get_data('iris')
cs

* 데이터를 로드하여 위 5개의 행을 출력한 결과는 위와 같습니다.

 

 

 

c)이제 setup 함수를 통해 데이터 전치리 및 모델 학습을 설정합니다.

* setup 함수는 Pycaret에서 사용되는 데이터 전처리 및 모델 학습 설정을 수행합니다.

1
2
# 데이터 전처리와 모델 학습 설정
exp = setup(data, target='species')
cs

 

 

* 위 결과에서 각 discription에 대한 설명은 아래와 같습니다.

 

· session_id: 각 실험에 대한 고유한 세션 ID입니다.

  이 값은 실험을 추적하고 관리하는데 사용되는 값으로, 임의로 생성됩니다.

 

· Target : 목표 변수(타겟)이 무엇인지 알려줍니다.

  irirs 데이터에서는 species(붓꽃의 품종)이 타겟임을 알려줍니다.


· Target Type: 목표 변수 (타겟)의 데이터 타입입니다. 자동으로 감지됩니다.

  타겟의 데이터 타입을 나타내며, iris 데이터에서 타겟은 Multiclass(다중클래스) 입니다. 


· Target Mapping : 목표 변수의 종류를 알려줍니다.

  목표 변수는 setosa, versicolor, virginica 이며, 각 변수들은 분석간 0 / 1 / 2 로 벡터화됨을 의미합니다.

 

· Original Data Shape: 원본 데이터의 형태, 즉 행과 열의 수를 나타내는 정보입니다.

  위 데이터에서는 (150, 5)가 나왔으며 앞의 150은 150개의 행이 있음을 / 뒤의 5는 5개의 열(특성 : 꽃받침 길이, 꽃받침 너비, 꽃잎 길이, 꽃잎 너비, 타겟)이 있음을 알려줍니다.

 

· Transformed Data Shape : 데이터 전처리 후 결과를 의미합니다.

  이때 저너리는, 결측값 처리, 범주형 변수 인코딩, 스케일링 등과 같은 데이터 변환을 말하며, 위 데이터에서는 전처리 후 데이터의 형태가 변하지 않았습니다.

 

·Transformed train set shape : 전처리 된 데이터를 학습 데이터로 나눈 결과입니다.

 총 150개의 데이터 중 105개의 데이터가 학습 데이터로 사용되었습니다.

 

· Transformed test set shape : 전처리 된 데이터를 테스트 데이터로 나눈 결과입니다.

총 150개의 데이터 중 45개의 데이터가 테스트 데이터로 사용되었습니다.

 

· Numeric Features  : 데이터셋에서 숫자로 표현된 특성들을 나타내는 용어입니다. 

 여기서는 4가 나왔으며, 즉 4개의 숫자형 데이터 특성이 있다는 것입니다. 위 데이터에서는 꽃받침길이, 꽃받침너비, 꽃잎길이, 꽃잎너비라는 4개의 숫자형 데이터 특성이 있음을 나타냅니다.

 

·Preprocess : setup 함수에서 진행한 전처리(Preprocess)를 의미합니다.

 위 결과에서는 True, 즉 전처리가 완료되었음을 의미하며, 이때 전처리는 1) 결측값 처리, 2) 범주형 변수 인코딩, 3) 데이터 분할(학습 / 테스트), 4) 스케일링(표준화 또는 정규화)

 

· Imputation type : 결측값을 어떻게 처리할 것을 의미합니다.

  이때 Simple이라는 결측값은 해당 열(feature)의 평균값, 중앙값 또는 최비값으로 채우는 것을 의미합니다.

 

· Numeric Imputation : 숫자형 데이터의 결측값 처리의 방법을 의미합니다.

 위에서는 mean, 즉 평균값으로 처리했다느 것을 의미합니다.

 

· Categorical Imputation : 범주형 데이터의 결측값 처리 방법을 의미합니다.

 위에서는 mode, 즉 최빈값으로 처리했다는 것을 의미합니다.

 

· Fold Generator : k-fold CV를 위해 fold를 만들때 fold를 나누는 방법을 의미합니다.

 위에서는 StartifiedKFold를 사용했음을 의미하며, 이는 즉 Target의 비율과 동일하게 train 데이터와 test 데이터를 나누었음을 의미합니다.

 

· Fold Number : 전체 데이터를 나눈 fold의 개수를 의미합니다. (k)

 위에서는 전체 데이터를 총 10개의 fold로 나누었음을 알려줍니다.

 

· cpu_jobs : 병렬 처리에 사용되는 CPU 코어의 개수를 의미합니다.

 위에서는 -1로 설정되어 시스템에서 사용할 수 있는 모든 CPU를 사용했음을 의미합니다.

 

· Use GPU : GPU를 사용했는지 여부를 알려줍니다.

  위에서는 GPU를 사용하지 않았음을 알려줍니다.

 

· Log Experiment : 실험 결과를 로그에 기록하고 관리할지를 나타내는 값입니다.

  위에서는 False로 나왔기에 결과를 기록하지 않음을 의미합니다.

 

· Experiment Name : 실험의 이름을 의미합니다.

 

 

 

d) 이번에는 위 설정을 바탕으로 모델들을 학습시켜보고 결과를 도출해보겠습니다. (train 데이터 사용)

1
2
# 1. 모델 비교
best_model = compare_models()
cs

* 분석에 총 15개의 모델이 활용되었으며, 평가지표는 Accuracy, AUC, Recall, Precision, F1, Kappa, MCC가 도출되었으며, 분석에 수행된 시간 또한 표현되었습니다.

* 가장 결과가 좋은 모델은 Quadratic Discriminant Analysis 임을 알 수 있습니다. 

 

 

 

e) 가장 결과가 좋았던 QDA를 바탕으로 10 fold CV를 수행한 결과를 나타냅니다. (train 데이터 사용)

1
2
3
# 2. 모델 학습 (가장 성능이 좋은 모델 선택)
# 모델 학습과 하이퍼파라미터 튜닝을 자동으로 수행
tuned_model = tune_model(best_model)
cs

 

 

f) 모델 평가를 나타내는 여러가지 척도들을 나타내는 결과입니다. 

Plot Type을 클릭하여 확인하면 됩니다. 이 중 본인의 PC 또는 분석 환경에 설치되어 있지 않는 패키지가 있는 경우 오류가 납니다. 필요한 평가 내용이 요구하는 라이브러리는 설치해주시면 되겠습니다.

1
2
# 3. 모델 평가
evaluate_model(tuned_model)
cs

 

 

g) 예측을 위해 테스트 데이터를 사용하기 위해 테스트 데이터를 가져오겠습니다.

1
2
# 4. 예측을 위한 테스트 데이터 가져오기 (여기서는 학습 데이터와 동일한 데이터를 사용)
test_data = get_data('iris')
cs

 

 

f) 모델에 대한 예측을 수행합니다. train 데이터로 학습된 모델을 바탕으로, test 데이터를 분류한 결과입니다.

1
2
# 5. 모델에 대한 예측 수행
predictions = predict_model(tuned_model, data=test_data)
cs

최종 결과는 위와 같이 나오게 되었습니다.

반응형

댓글