test_final / models /xgboost /config.py
k22056537
feat: sync integration updates across app and ML pipeline
eb4abb8
"""Shared XGBoost config used by training and evaluation. Loads from config/default.yaml when present."""
from copy import deepcopy
from xgboost import XGBClassifier
def _load_xgb_params():
try:
from config import get
xgb = get("xgboost") or {}
return {
"n_estimators": xgb.get("n_estimators", 600),
"max_depth": xgb.get("max_depth", 8),
"learning_rate": xgb.get("learning_rate", 0.1489),
"subsample": xgb.get("subsample", 0.9625),
"colsample_bytree": xgb.get("colsample_bytree", 0.9013),
"reg_alpha": xgb.get("reg_alpha", 1.1407),
"reg_lambda": xgb.get("reg_lambda", 2.4181),
"eval_metric": xgb.get("eval_metric", "logloss"),
}
except Exception:
return {
"n_estimators": 600,
"max_depth": 8,
"learning_rate": 0.1489,
"subsample": 0.9625,
"colsample_bytree": 0.9013,
"reg_alpha": 1.1407,
"reg_lambda": 2.4181,
"eval_metric": "logloss",
}
XGB_BASE_PARAMS = _load_xgb_params()
def get_xgb_params():
return deepcopy(XGB_BASE_PARAMS)
def build_xgb_classifier(seed: int, *, verbosity: int = 0, early_stopping_rounds=None):
params = get_xgb_params()
params.update(
{
"random_state": seed,
"verbosity": verbosity,
}
)
if early_stopping_rounds is not None:
params["early_stopping_rounds"] = early_stopping_rounds
return XGBClassifier(**params)