019 create_model() 상세 활용
키워드: create_model, 모델 생성
개요
create_model()은 특정 알고리즘으로 모델을 생성하는 함수입니다. compare_models()로 후보를 찾은 후, 개별 모델을 더 세밀하게 제어할 때 사용합니다.
실습 환경
- Python 버전: 3.11 권장
- 필요 패키지:
pycaret[full]>=3.0
create_model() 기본 사용법
from pycaret.classification import *
from pycaret.datasets import get_data
# 019 데이터 로드 및 설정
data = get_data('iris')
clf = setup(data, target='species', session_id=42, verbose=False)
# 019 랜덤 포레스트 모델 생성
rf = create_model('rf')
모델 약어
# 019 자주 사용하는 모델
lr = create_model('lr') # Logistic Regression
dt = create_model('dt') # Decision Tree
rf = create_model('rf') # Random Forest
gbc = create_model('gbc') # Gradient Boosting
xgb = create_model('xgboost') # XGBoost
lgb = create_model('lightgbm') # LightGBM
cat = create_model('catboost') # CatBoost
knn = create_model('knn') # K-Nearest Neighbors
svm = create_model('svm') # Support Vector Machine
nb = create_model('nb') # Naive Bayes
주요 파라미터
fold - 교차 검증 폴드 수
# 5-fold 교차 검증
rf = create_model('rf', fold=5)
# 019 기본값은 setup()에서 설정한 값 (기본 10)
cross_validation - 교차 검증 제어
# 019 교차 검증 비활성화
rf = create_model('rf', cross_validation=False)
return_train_score - 학습 점수 반환
# 019 학습/검증 점수 모두 확인 (과적합 진단)
rf = create_model('rf', return_train_score=True)
하이퍼파라미터 직접 설정
# 019 Random Forest 커스텀 파라미터
rf_custom = create_model(
'rf',
n_estimators=200,
max_depth=10,
min_samples_split=5,
min_samples_leaf=2,
random_state=42
)
# 019 XGBoost 커스텀 파라미터
xgb_custom = create_model(
'xgboost',
n_estimators=100,
max_depth=6,
learning_rate=0.1,
subsample=0.8
)
# 019 LightGBM 커스텀 파라미터
lgb_custom = create_model(
'lightgbm',
n_estimators=100,
num_leaves=31,
learning_rate=0.05,
feature_fraction=0.8
)
모델 성능 확인
from pycaret.classification import *
from pycaret.datasets import get_data
data = get_data('diabetes')
clf = setup(data, target='Class variable', session_id=42, verbose=False)
# 019 모델 생성 및 성능 확인
rf = create_model('rf')
# 019 결과 테이블 출력됨:
# 019 Accuracy, AUC, Recall, Precision, F1, Kappa, MCC
여러 모델 비교 생성
# 019 여러 모델 순차 생성
models = {}
for name in ['lr', 'rf', 'xgboost', 'lightgbm']:
print(f"\n=== {name.upper()} ===")
models[name] = create_model(name)
# 019 최고 모델 선택
import pandas as pd
results = []
for name, model in models.items():
metrics = pull() # 마지막 결과 가져오기
results.append({
'model': name,
'accuracy': metrics['Accuracy'].mean(),
'auc': metrics['AUC'].mean()
})
df = pd.DataFrame(results)
print(df.sort_values('auc', ascending=False))
pull() 함수로 결과 가져오기
# 019 모델 생성
rf = create_model('rf')
# 019 교차 검증 결과 DataFrame으로 가져오기
results = pull()
print(results)
# 019 평균 성능
print(f"평균 Accuracy: {results['Accuracy'].mean():.4f}")
print(f"평균 AUC: {results['AUC'].mean():.4f}")
print(f"표준편차: {results['Accuracy'].std():.4f}")
실전 예제: 단계별 모델 개선
from pycaret.classification import *
from pycaret.datasets import get_data
# 1. 데이터 준비
data = get_data('credit')
clf = setup(data, target='default', session_id=42, verbose=False)
# 2. 기본 모델 생성
print("=== 기본 Random Forest ===")
rf_base = create_model('rf')
base_results = pull()
# 3. 커스텀 파라미터로 개선
print("\n=== 커스텀 Random Forest ===")
rf_custom = create_model(
'rf',
n_estimators=200,
max_depth=15,
min_samples_split=10,
class_weight='balanced' # 불균형 대응
)
custom_results = pull()
# 4. 비교
print(f"\n기본 AUC: {base_results['AUC'].mean():.4f}")
print(f"커스텀 AUC: {custom_results['AUC'].mean():.4f}")
get_config()로 모델 목록 확인
# 019 사용 가능한 모델 목록
from pycaret.classification import get_config
models = get_config('models')
print(models)
정리
create_model(약어)로 특정 알고리즘 모델 생성- 하이퍼파라미터는 함수 인자로 직접 전달
pull()로 교차 검증 결과 DataFrame 확보fold파라미터로 교차 검증 폴드 조정return_train_score=True로 과적합 진단
다음 글 예고
다음 글에서는 분류 평가 지표 - Accuracy, Precision, Recall을 다룹니다.
PyCaret 머신러닝 마스터 시리즈 #019