이번에 알아볼 것은 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 |
최종 결과는 위와 같이 나오게 되었습니다.
'머신러닝 with Python' 카테고리의 다른 글
[머신러닝 with 파이썬] PCA / 주성분 분석 / 차원축소 /iris 데이터 활용 (0) | 2023.09.26 |
---|---|
[딥러닝 with 파이썬] GAN (Generative Adversarial Networks) / 생성적 적대 신경망 / MNIST 데이터로 구현 (2) | 2023.09.25 |
[머신러닝 with 파이썬] 회귀 트리(Regression Tree) (0) | 2023.09.23 |
[머신러닝 with 파이썬] 로지스틱 회귀(Logistic Regression) (0) | 2023.09.22 |
[머신러닝 with 파이썬] 경사하강법(Gradient Descent) / 확률적 경사하강법(Stochastic Gradient Descent) (0) | 2023.09.21 |
댓글