<aside>

</aside>


πŸ“– 챕터 μ†Œκ°œ

μ§€κΈˆκΉŒμ§€ μš°λ¦¬λŠ” 데이터λ₯Ό μ€€λΉ„ν•˜κ³ , μˆ˜λ§Žμ€ λͺ¨λΈμ„ λΉ„κ΅ν•˜κ³ , μ±”ν”Όμ–Έ λͺ¨λΈμ„ νŠœλ‹ν•˜κ³ , κ·Έ μ„±λŠ₯을 λ‹€κ°λ„λ‘œ λΆ„μ„ν–ˆμŠ΅λ‹ˆλ‹€. 정말 κΈ΄ μ—¬μ •μ΄μ—ˆμ£ ! 이제 κ·Έ λͺ¨λ“  λ…Έλ ₯의 결싀을 맺을 μ‹œκ°„μž…λ‹ˆλ‹€. 이번 μ‹œκ°„μ—λŠ” μš°λ¦¬κ°€ λ§Œλ“  졜고의 λͺ¨λΈμ„ κ°€μ§€κ³  μ‹€μ œ μ˜ˆμΈ‘μ„ μˆ˜ν–‰ν•˜λŠ” 방법과, λͺ¨λΈμ„ μ‹€μ œ μ„œλΉ„μŠ€μ— 배포할 수 μžˆλŠ” μƒνƒœλ‘œ 'νŒ¨ν‚€μ§•'ν•˜λŠ” 방법을 배울 κ²λ‹ˆλ‹€. λΆ„μ„μ—μ„œ μ‹€μ œ κ°€μΉ˜ 창좜둜 μ΄μ–΄μ§€λŠ”, κ°€μž₯ μ‹€μš©μ μ΄κ³  μ€‘μš”ν•œ λ§ˆμ§€λ§‰ 단계에 μ˜€μ‹  것을 ν™˜μ˜ν•©λ‹ˆλ‹€!


🎯 챕터 λͺ©ν‘œ


πŸ’» 이번 μ±•ν„°μ˜ 전체 μ½”λ“œ 및 ν”„λ‘œμ νŠΈ ꡬ쑰

이번 μ±•ν„°μ˜ 핡심 μ½”λ“œ

πŸ’‘ 7κ°•μ—μ„œ νŠœλ‹ν•œ λͺ¨λΈμ„ κ°€μ§€κ³  μ΅œμ’… μ„±λŠ₯을 κ²€μ¦ν•˜κ³ , μƒˆλ‘œμš΄ 데이터에 λŒ€ν•œ μ˜ˆμΈ‘μ„ μˆ˜ν–‰ν•œ λ’€, 배포λ₯Ό μœ„ν•΄ 파일둜 μ €μž₯ν•˜κ³  λ‹€μ‹œ λΆˆλŸ¬μ™€ κ²€μ¦ν•˜λŠ” 전체 과정을 λ‹€λ£Ήλ‹ˆλ‹€.

# 1. 라이브러리 μ€€λΉ„
import pandas as pd
from pycaret.datasets import get_data
from pycaret.regression import setup, create_model, tune_model, predict_model, finalize_model, save_model, load_model

# 2. 데이터 λ‘œλ“œ 및 μ‹€ν—˜ ν™˜κ²½ μ„€μ •
df = get_data('insurance')
setup(data=df, target='charges', session_id=123, fold_shuffle=True)

# 3. λͺ¨λΈ 생성 및 νŠœλ‹
base_model = create_model('gbr', verbose=False) # ν‘œ 쀑볡 좜λ ₯을 막기 μœ„ν•΄ verbose=False
tuned_model = tune_model(base_model, optimize = 'R2', n_iter=200, verbose=False)

# 4. ν™€λ“œμ•„μ›ƒ λ°μ΄ν„°λ‘œ μ΅œμ’… μ„±λŠ₯ 검증
print("--- 1. ν™€λ“œμ•„μ›ƒ 데이터셋 μ„±λŠ₯ 검증 ---")
holdout_predictions = predict_model(tuned_model)

# 5. 배포λ₯Ό μœ„ν•œ λͺ¨λΈ μ΅œμ’… ν™•μ •
final_model = finalize_model(tuned_model)

# 6. λͺ¨λΈ νŒŒμ΄ν”„λΌμΈ μ €μž₯
save_model(final_model, 'final_insurance_model_pipeline')

# 7. μ €μž₯된 λͺ¨λΈ 뢈러였기 및 μ‹ κ·œ 데이터 예츑
saved_pipeline = load_model('final_insurance_model_pipeline')

# κ°€μƒμ˜ μ‹ κ·œ 데이터 생성 (target 컬럼이 μ—†μŒ)
new_data = pd.DataFrame({
    'age': [35, 50], 'sex': ['male', 'female'], 'bmi': [25.5, 30.2],
    'children': [1, 2], 'smoker': ['no', 'yes'], 'region': ['southwest', 'northeast']
})

new_predictions = predict_model(saved_pipeline, data=new_data)
print("\\n--- 2. μ €μž₯된 νŒŒμ΄ν”„λΌμΈμœΌλ‘œ μ‹ κ·œ 데이터 예츑 κ²°κ³Ό ---")
print(new_predictions)

μ½”λ“œ μ‹€ν–‰ κ²°κ³Ό 미리보기

1. predict_model() μ‹€ν–‰ κ²°κ³Ό (ν™€λ“œμ•„μ›ƒ 데이터)

setup() μ‹œ 뢄리해 λ‘μ—ˆλ˜ ν…ŒμŠ€νŠΈ 데이터에 λŒ€ν•œ μ΅œμ’… μ„±μ ν‘œμž…λ‹ˆλ‹€. R2 μ μˆ˜κ°€ 0.8824둜 맀우 λ†’κ²Œ λ‚˜μ™”μŠ΅λ‹ˆλ‹€.

--- 1. ν™€λ“œμ•„μ›ƒ 데이터셋 μ„±λŠ₯ 검증 ---
                             Model      MAE           MSE        RMSE      R2  RMSLE   MAPE
0  Gradient Boosting Regressor  2460.3846  1.679865e+07   4098.6157  0.8824  0.3826  0.2926

save_model() & load_model() μ‹€ν–‰ λ©”μ‹œμ§€

λͺ¨λΈ νŒŒμ΄ν”„λΌμΈμ΄ μ„±κ³΅μ μœΌλ‘œ μ €μž₯되고 λ‹€μ‹œ λΆˆλŸ¬μ™€μ‘ŒμŒμ„ ν™•μΈν•©λ‹ˆλ‹€.