<aside>
</aside>
15κ°μμ μ°λ¦¬λ RΒ² μ μκ° λμ, μμ£Ό νλ₯ν νκ· λͺ¨λΈμ λ§λ€μμ΅λλ€. νμ§λ§ λμ μ μ νλλ§μΌλ‘ μ΄ λͺ¨λΈμ μμ ν μ λ’°ν μ μμκΉμ? λ§μΉ 건κ°κ²μ§μμ νμμ΄ μ μμ΄λΌκ³ ν΄μ λͺΈ μ μ²΄κ° κ±΄κ°νλ€κ³ λ¨μ ν μ μλ κ²μ²λΌ, λͺ¨λΈλ λ€κ°λλ‘ 'μ§λ¨'ν΄ λ΄μΌ ν©λλ€. μ΄λ² μκ°μλ plot_model
μ μ¬μ©νμ¬ μ°λ¦¬ λͺ¨λΈμ μ¨κ²¨μ§ λ¬Έμ μ μ μλμ§, μμΈ‘μ νΈν₯λμ§ μμλμ§, μ΄λ€ λ°μ΄ν°μ νΉν μν₯μ λ§μ΄ λ°λμ§ λ±μ μ΄ν΄λ³΄λ 'λͺ¨λΈ μμ¬'κ° λμ΄λ³΄κ² μ΅λλ€.
residuals
)**μ ν΄μνμ¬ λͺ¨λΈ μ€μ°¨μ λ±λΆμ°μ±(Homoscedasticity)μ νμΈν μ μμ΅λλ€.error
)**μ ν΅ν΄ λͺ¨λΈμ μμΈ‘μ΄ μ€μ κ°κ³Ό μΌλ§λ μ°¨μ΄ λλμ§ μκ°μ μΌλ‘ νμ
ν μ μμ΅λλ€.cooks
)**μ μ¬μ©νμ¬ λͺ¨λΈ μ 체μ ν° μν₯μ λ―ΈμΉλ 'μν₯μ (influential points)'μ μλ³ν μ μμ΅λλ€.π‘ 15κ°μμ μ΅μ’ μ μΌλ‘ νλν tuned_best_modelμ μ¬μ©νμ¬, νκ· λͺ¨λΈ μ§λ¨μ νμμ μΈ μΈ κ°μ§ ν΅μ¬ νλ‘―μ μμ±νκ³ λΆμν©λλ€.
# 1. λΌμ΄λΈλ¬λ¦¬ λ° νλλ λͺ¨λΈ μ€λΉ (1~15κ° λ΄μ©)
from pycaret.datasets import get_data
from pycaret.regression import setup, compare_models, tune_model, plot_model
# λ°μ΄ν° λ‘λ, μ€μ , λͺ¨λΈ λΉκ΅ λ° νλ
insurance_df = get_data('insurance')
setup(
data=insurance_df, target='charges', session_id=123,
transform_target=True, transform_target_method='quantile',
fold_shuffle=True
)
best_model = compare_models(sort='R2')
tuned_best_model = tune_model(best_model, optimize='R2', n_iter=100)
# 2. λͺ¨λΈ μ§λ¨μ μν ν΅μ¬ νλ‘― μμ±
# μμ°¨ νλ‘― (Residuals Plot) - μ€μ°¨μ ν¨ν΄ νμΈ
print("--- 1. μμ°¨ νλ‘― (μ€μ°¨μ 무μμμ± νμΈ) ---")
plot_model(tuned_best_model, plot='residuals')
# μμΈ‘ μλ¬ νλ‘― (Prediction Error Plot) - μμΈ‘κ° vs μ€μ κ° λΉκ΅
print("\\n--- 2. μμΈ‘ μλ¬ νλ‘― (μμΈ‘κ° vs μ€μ κ° λΉκ΅) ---")
plot_model(tuned_best_model, plot='error')
# μΏ‘ 거리 νλ‘― (Cook's Distance Plot) - μν₯λ ₯ μλ λ°μ΄ν° νμΈ
print("\\n--- 3. μΏ‘ 거리 νλ‘― (μν₯λ ₯ μλ λ°μ΄ν° νμΈ) ---")
plot_model(tuned_best_model, plot='cooks')
residuals
) μ€ν κ²°κ³Όerror
) μ€ν κ²°κ³Ό