100 PyCaret 마스터 정리
키워드: 정리, 치트시트, 마스터
개요
100개의 글을 통해 PyCaret의 모든 기능을 살펴보았습니다. 이 마지막 글에서는 시리즈 전체를 정리하고, 실무에서 바로 사용할 수 있는 치트시트와 베스트 프랙티스를 제공합니다.
실습 환경
- Python 버전: 3.11 권장
- 필요 패키지:
pycaret[full]>=3.0
PyCaret 전체 구조
PyCaret 모듈:
┌─────────────────────────────────────────────┐
│ pycaret.classification │ 지도 학습 - 분류
├─────────────────────────────────────────────┤
│ pycaret.regression │ 지도 학습 - 회귀
├─────────────────────────────────────────────┤
│ pycaret.clustering │ 비지도 학습 - 클러스터링
├─────────────────────────────────────────────┤
│ pycaret.anomaly │ 비지도 학습 - 이상치 탐지
├─────────────────────────────────────────────┤
│ pycaret.time_series │ 시계열 예측
├─────────────────────────────────────────────┤
│ pycaret.datasets │ 샘플 데이터세트
└─────────────────────────────────────────────┘
핵심 워크플로우
from pycaret.classification import *
# 1. 환경 설정
setup(data, target='target')
# 2. 모델 비교
best = compare_models()
# 3. 모델 생성
model = create_model('rf')
# 4. 튜닝
tuned = tune_model(model)
# 5. 앙상블
blended = blend_models([model1, model2])
stacked = stack_models([model1, model2])
# 6. 평가
evaluate_model(model)
plot_model(model)
# 7. 예측
predictions = predict_model(model, data=new_data)
# 8. 저장/로드
final = finalize_model(model)
save_model(final, 'model')
loaded = load_model('model')
모듈별 치트시트
분류 (Classification)
from pycaret.classification import *
# 100 기본 설정
setup(data, target='label', session_id=42)
# 100 자주 쓰는 옵션
setup(
data, target='label',
normalize=True, # 정규화
fix_imbalance=True, # 불균형 처리 (SMOTE)
remove_outliers=True, # 이상치 제거
feature_selection=True, # 특성 선택
fold=5, # 교차 검증 폴드
session_id=42
)
# 100 모델 ID
# 100 'lr', 'knn', 'nb', 'dt', 'svm', 'rbfsvm',
# 100 'gpc', 'mlp', 'ridge', 'rf', 'qda', 'ada',
# 100 'gbc', 'lda', 'et', 'xgboost', 'lightgbm', 'catboost'
# 100 정렬 기준
compare_models(sort='Accuracy') # 또는 'AUC', 'Recall', 'Prec.', 'F1'
회귀 (Regression)
from pycaret.regression import *
# 100 기본 설정
setup(data, target='price', session_id=42)
# 100 자주 쓰는 옵션
setup(
data, target='price',
normalize=True,
transformation=True, # 분포 변환
transform_target=True, # 타겟 변환
remove_outliers=True,
session_id=42
)
# 100 모델 ID
# 100 'lr', 'lasso', 'ridge', 'en', 'lar', 'llar',
# 100 'omp', 'br', 'ard', 'par', 'ransac', 'tr',
# 100 'huber', 'kr', 'svm', 'knn', 'dt', 'rf',
# 100 'et', 'ada', 'gbr', 'mlp', 'xgboost', 'lightgbm', 'catboost'
# 100 정렬 기준
compare_models(sort='R2') # 또는 'MAE', 'MSE', 'RMSE', 'MAPE'
클러스터링 (Clustering)
from pycaret.clustering import *
# 100 기본 설정 (타겟 없음)
setup(data, session_id=42)
# 100 모델 ID
# 100 'kmeans', 'ap', 'meanshift', 'sc', 'hclust',
# 100 'dbscan', 'optics', 'birch', 'kmodes'
# 100 클러스터 할당
model = create_model('kmeans', num_clusters=4)
result = assign_model(model)
이상치 탐지 (Anomaly Detection)
from pycaret.anomaly import *
# 100 기본 설정
setup(data, session_id=42)
# 100 모델 ID
# 100 'iforest', 'knn', 'lof', 'svm', 'pca',
# 100 'mcd', 'sod', 'sos', 'cluster', 'histogram'
# 100 이상치 탐지
model = create_model('iforest', fraction=0.05)
result = assign_model(model)
시계열 (Time Series)
from pycaret.time_series import *
# 100 기본 설정
setup(data, target='value', fh=12, session_id=42)
# 100 모델 ID
# 100 'naive', 'grand_means', 'snaive', 'polytrend',
# 100 'arima', 'auto_arima', 'exp_smooth', 'ets',
# 100 'theta', 'stlf', 'croston', 'prophet'
# 100 예측
predictions = predict_model(model, fh=12)
주요 함수 레퍼런스
setup() 주요 파라미터
setup(
data, # 데이터프레임
target, # 타겟 컬럼명
# 데이터 분할
train_size=0.7, # 학습 데이터 비율
data_split_shuffle=True, # 셔플 여부
# 전처리
normalize=False, # 정규화
normalize_method='zscore', # 'minmax', 'maxabs', 'robust'
transformation=False, # 분포 변환
transformation_method='yeo-johnson',
# 결측치
imputation_type='simple',
numeric_imputation='mean', # 'median', 'zero', 'mode'
categorical_imputation='mode',
# 이상치
remove_outliers=False,
outliers_threshold=0.05,
# 불균형 (분류)
fix_imbalance=False,
fix_imbalance_method='SMOTE',
# 특성 처리
ignore_features=None, # 제외할 특성
numeric_features=None, # 수치형 지정
categorical_features=None, # 범주형 지정
# 교차 검증
fold=10,
fold_strategy='stratifiedkfold', # 'kfold', 'timeseries'
# 실험 로깅
log_experiment=False,
experiment_name='exp',
# 재현성
session_id=None,
verbose=True
)
tune_model() 주요 파라미터
tune_model(
estimator, # 튜닝할 모델
optimize='Accuracy', # 최적화 메트릭
n_iter=10, # 반복 횟수
search_library='scikit-learn', # 'optuna', 'tune-sklearn'
search_algorithm='random', # 'grid', 'bayesian'
custom_grid=None, # 커스텀 파라미터 그리드
fold=None, # 교차 검증 폴드
return_tuner=False, # 튜너 객체 반환
verbose=True
)
plot_model() 주요 플롯
# 100 분류
plot_model(model, plot='auc') # ROC 커브
plot_model(model, plot='confusion_matrix') # 혼동 행렬
plot_model(model, plot='pr') # Precision-Recall
plot_model(model, plot='class_report') # 분류 보고서
plot_model(model, plot='feature') # 특성 중요도
plot_model(model, plot='boundary') # 결정 경계
plot_model(model, plot='learning') # 학습 곡선
# 100 회귀
plot_model(model, plot='residuals') # 잔차
plot_model(model, plot='error') # 예측 오차
plot_model(model, plot='feature') # 특성 중요도
plot_model(model, plot='cooks') # Cook's Distance
# 100 클러스터링
plot_model(model, plot='cluster') # 클러스터 시각화
plot_model(model, plot='elbow') # 엘보우
plot_model(model, plot='silhouette') # 실루엣
plot_model(model, plot='distribution') # 분포
베스트 프랙티스
1. 데이터 준비
# 100 데이터 탐색 먼저
print(data.info())
print(data.describe())
print(data.isnull().sum())
# 100 타겟 분포 확인
print(data['target'].value_counts(normalize=True))
2. 실험 관리
# 100 MLflow로 실험 기록
setup(
data, target='target',
log_experiment=True,
experiment_name='project_v1',
session_id=42
)
3. 모델 선택 전략
# 1단계: 빠른 비교
best = compare_models(n_select=5)
# 2단계: 상위 모델 튜닝
tuned_models = [tune_model(m) for m in best[:3]]
# 3단계: 앙상블
final = stack_models(tuned_models)
4. 평가 지표 선택
# 100 분류
# 100 - 균형 데이터: Accuracy, F1
# 100 - 불균형 데이터: AUC, F1, Recall
# 100 - 비용 민감: 커스텀 메트릭
# 100 회귀
# 100 - 일반: R2, RMSE
# 100 - 이상치 있음: MAE
# 100 - 비율 중요: MAPE
5. 배포 전 체크리스트
# 1. 최종화
final_model = finalize_model(best_model)
# 2. 테스트 데이터 검증
test_predictions = predict_model(final_model, data=test_data)
# 3. 저장
save_model(final_model, 'production_model')
# 4. 로드 테스트
loaded = load_model('production_model')
verify_predictions = predict_model(loaded, data=test_data[:5])
시리즈 목차 요약
Part 1: 기초 (001-020)
- PyCaret 소개, 설치, 기본 개념
- 분류, 회귀 기초
Part 2: 분류 심화 (021-040)
- 다양한 분류 알고리즘
- 하이퍼파라미터 튜닝
- 앙상블 기법
Part 3: 회귀 (041-055)
- 회귀 알고리즘
- 특성 엔지니어링
- 모델 해석
Part 4: 클러스터링 (056-065)
- 클러스터링 알고리즘
- 클러스터 분석
Part 5: 이상치 탐지 & 시계열 (066-080)
- 이상치 탐지
- 시계열 예측
Part 6: 고급 기능 (081-092)
- 모델 해석 (SHAP, PDP)
- 특성 선택
- 파이프라인
Part 7: 배포 & 종합 (093-100)
- 모델 저장/로드
- FastAPI, Docker
- 종합 프로젝트
다음 단계
PyCaret 마스터 후 추천 학습 경로:
1. 심화 학습
- scikit-learn 내부 구조 이해
- 개별 알고리즘 수학적 원리
2. 관련 도구
- MLflow: 실험 관리
- DVC: 데이터 버전 관리
- Kubeflow: ML 파이프라인
3. 프로덕션 기술
- Docker/Kubernetes
- 모델 모니터링
- A/B 테스트
4. 특화 분야
- 딥러닝: PyTorch, TensorFlow
- NLP: Hugging Face
- 컴퓨터 비전: OpenCV
마무리
print("""
=== PyCaret 머신러닝 마스터 시리즈 완료 ===
100개의 글을 통해 다룬 내용:
- 5개 ML 모듈 (분류, 회귀, 클러스터링, 이상치, 시계열)
- 50+ 알고리즘
- 전처리부터 배포까지 전체 파이프라인
- 3개의 실전 프로젝트
핵심 메시지:
1. AutoML은 시작점이지 끝이 아님
2. 도메인 이해가 모델보다 중요
3. 단순한 모델부터 시작
4. 지속적인 모니터링과 개선
PyCaret으로 빠르게 프로토타입을 만들고,
필요에 따라 커스터마이즈하세요.
감사합니다! 🎉
""")
정리
- PyCaret: 로우코드 AutoML 라이브러리
- 5개 모듈: 분류, 회귀, 클러스터링, 이상치, 시계열
- 핵심 워크플로우: setup → compare → create → tune → predict → save
- 베스트 프랙티스: 실험 관리, 적절한 메트릭, 체계적 평가
PyCaret 머신러닝 마스터 시리즈 #100 - 완결