μ΄ νλ‘μ νΈλ μ£Όμ΄μ§ λ°μ΄ν°λ₯Ό λ°νμΌλ‘ μ μΈκ°λ₯Ό μμΈ‘νλ AI μκ³ λ¦¬μ¦μ κ°λ°νκΈ° μν νλ‘μ νΈμ λλ€. μ΄λ₯Ό ν΅ν΄ νκ΅μ μ μΈ μμ₯μ ꡬ쑰μ λν₯μ μ΄ν΄νκ³ , μΈνλΌμ κ²½μ μ μμΈμ λν ν΅μ°°μ κΈ°λν©λλ€.
μ ν¬ νμ κ°λ°μμ²λΌ νμ νκ³ , 체κ³μ μΌλ‘ κ°μ€μ μΈμ μ€ννκ³ κΈ°λ‘νλ©° μ¬λ¬ λͺ¨λΈμ κ²½νν΄λ³΄λ κ²μ λͺ©νλ‘ ν©λλ€.
κΉμμ°¬ | λ°κ΄μ§ | λ°μΈμ° | λ°μ¬ν | λ°°νμ° | μ‘°μ μ |
---|---|---|---|---|---|
project/
β
βββ notebooks/
β βββ EDA.ipynb
β βββ baseline.ipynb
βββ docs/
β βββ λ©μ
리ν¬νΈ, λ°νμλ£ λ±
βββ src/
β βββ data/
β βββ __init__.py
β βββ preprocessor.py
β βββ features.py
β βββ models/
β βββ __init__.py
β βββ ensemble.py
β βββ lgbm.py # LGBM λͺ¨λΈ
β βββ xgb.py # XGBoost λͺ¨λΈ
β βββ rf.py # Random Forest λͺ¨λΈ
β βββ arg_paser.py # 컀맨λ λΌμΈ μ΅μ
μΈν μ€μ
β βββ utils.py # μλλΉ μ½λ°± 컀μ€ν
, λͺ¨λΈ μ μ₯ λ° λΆλ¬μ€κΈ°
βββ configs/
β βββ train_config.yaml
βββ saved/
β βββ models/ # λͺ¨λΈ λ³ pkl νμΌ μ μ₯
βββ train.py
βββ test.py
μ΄ νλ‘μ νΈλ₯Ό μ€ννκΈ° μν΄ νμν λͺ¨λ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€μΉνλ €λ©΄ λ€μ λͺ λ Ήμ΄λ₯Ό μ€ννμΈμ:
pip install -r requirements.txt
μ΄ νλ‘μ νΈλ configs/
λλ ν 리 λ΄μ YAML νμΌλ‘ λͺ¨λΈ νμ΄νΌ νλΌλ―Έν°μ κΈ°ν μ€μ μ κ΄λ¦¬ν©λλ€.
μ€μ νμΌ(config.yaml
)μ λ€μκ³Ό κ°μ μ£Όμ μΉμ
μΌλ‘ ꡬμ±λμ΄ μμ΅λλ€:
- κ³΅ν΅ μ€μ (common)
- LightGBM μ€μ (lightgbm)
- CatBoost μ€μ (catboost)
- Random Forest μ€μ (rf)
κ° μΉμ μλ ν΄λΉ λͺ¨λΈ λλ μ 체 νλ‘μ νΈμ νμν λ€μν 맀κ°λ³μκ° ν¬ν¨λμ΄ μμ΅λλ€.
μ€μ νμΌμ μΌλΆ μμ:
common:
data_path: "../../data/"
random_seed: 42
n_splits: 5 # KFold split
lightgbm:
objective: "regression"
metric: ["mae", "rmse"]
num_leaves: 1200
learning_rate: 0.035
# ...
κ°λ³ λͺ¨λΈμ νλ ¨νλ €λ©΄ λ€μ λͺ λ Ήμ΄λ₯Ό μ¬μ©νμΈμ:
python train.py -lgb
python train.py -cat
python train.py -rf
# λλ μ¬λ¬ λͺ¨λΈμ νλ²μ νμ΅μν¬ μλ μμ΅λλ€
python tarin.py -lgb -cat -rf
μμλΈ λͺ¨λΈμ ν μ€νΈ νλ €λ©΄ λ€μ λͺ λ Ήμ΄λ₯Ό μ¬μ©νμΈμ:
python test.py