Created at : 2024-10-31 17:55
Auther: Soo.Y


๐Ÿ“๋ฉ”๋ชจ

Setup

X_train์™€ y_train์€ ํŒ๋‹ค์Šค ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ํƒ€์ž…์œผ๋กœ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. experiment_name์— ์‹คํ—˜ ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

from pycaret.classification import ClassificationExperiment
 
s= ClassificationExperiment()
 
s.setup(
ย  ย  data=X_train,
ย  ย  target=y_train,
ย  ย  experiment_name='cold_disease',
ย  ย  verbose=True,
ย  ย  normalize=True,
)

compare_models

compare_models๋กœ ๋‹ค์–‘ํ•œ ๋ชจ๋ธ(๊ฐ์ž ๊ฐœ๋ณ„ ๋ชจ๋ธ ๊ฒฐ๊ณผ์ž„) ์„ฑ๋Šฅ์„ ๋น„๊ตํ•˜์—ฌ best ๋ชจ๋ธ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. best model์€ n_select๋กœ ๋žญํ‚น ์ˆœ์œ„์— ํ•ด๋‹นํ•˜๋Š” ๋ชจ๋ธ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. exclude์—์„œ ์ œ์™ธํ•˜๊ณ  ์‹ถ์€ ๋ชจ๋ธ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

best = s.compare_models(
ย  ย  sort='F1',
ย  ย  fold=10,
ย  ย  n_select=3,
ย  ย  exclude=['lightgbm'],
)
print(best)```
 
# tune_model
`tune_model`๋กœ best model์—์„œ ํŠœ๋‹์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
```python
tuned_models = [s.tune_model(model) for model in best]
print(tuned_models)

blend_models

blend_models๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์กฐํ•ฉ๋œ ๋ชจ๋ธ(Voting)์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. optimize๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์–ด๋–ค ํ‰๊ฐ€ ์ง€ํ‘œ๋กœ ํŠœ๋‹ํ• ์ง€ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ Accuracy๋กœ ๋˜์–ด ์žˆ์–ด์„œ ๋งŒ์•ฝ ์ •ํ™•๋„๊ฐ€ ์ค‘์š”ํ•œ ์ƒํ™ฉ์ด ์•„๋‹ˆ๋ฉด ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

blended_model = s.blend_models(estimator_list=tuned_models, optimize='F1')
print(blended_model)

finalize_model

finalize_model์„ ์‚ฌ์šฉํ•ด์„œ ์ตœ์ข… ๊ฒฐ์ •๋œ ๋ชจ๋ธ์— ๋Œ€ํ•ด์„œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•™์Šต์„ ํ•ฉ๋‹ˆ๋‹ค.

final_model = s.finalize_model(blended_model)
print(final_model)

predict_model

predict_model์„ ์‚ฌ์šฉํ•ด์„œ ์˜ˆ์ธก ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. raw_score=True์„ ์„ค์ •ํ•˜๋ฉด label์— ๋Œ€ํ•œ ํ™•๋ฅ  ๊ฐ’์„ ๊ฐ™์ด ๋งŒ๋“ญ๋‹ˆ๋‹ค. (๋‹จ, ๋ชจ๋ธ์—์„œ ํ™•๋ฅ  ๊ฐ’์ด ์—†์œผ๋ฉด ์ƒ์„ฑ์ด ์•ˆ๋ฉ๋‹ˆ๋‹ค.)

predictions = s.predict_model(final_model, data=X_valid, raw_score=True)
predictions

save_model

save_model์„ ์‚ฌ์šฉํ•ด์„œ ๋ชจ๋ธ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. pkl ํŒŒ์ผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

s.save_model(final_model, 'model_name')

load_model

load_model์„ ์‚ฌ์šฉํ•ด์„œ ์ €์žฅ๋œ ๋ชจ๋ธ์„ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.

s.load_model('model_name)

๐Ÿ“œ์ถœ์ฒ˜(์ฐธ๊ณ  ๋ฌธํ—Œ)


๐Ÿ”—์—ฐ๊ฒฐ ๋ฌธ์„œ