PrjPerso_credexp / scripts /train_mlflow.py
Benoît Girard
Deploy from GitHub Actions
a58ec05 verified
Raw
History Blame Contribute Delete
1.76 kB
from __future__ import annotations
import argparse
import mlflow
from credexp.config import settings
from credexp.modeling.dataset import load_features
from credexp.modeling.train import TrainConfig, log_run
from credexp.utils.logging import get_logger
log = get_logger(__name__)
def main() -> None:
parser = argparse.ArgumentParser()
parser.add_argument("--cv", type=int, default=5)
parser.add_argument("--undersample", action="store_true")
parser.add_argument("--cost-fn", type=float, default=10.0)
parser.add_argument("--cost-fp", type=float, default=1.0)
args = parser.parse_args()
ds = load_features()
X, y = ds.X_train, ds.y_train
mlflow.set_tracking_uri(settings.mlflow_tracking_uri)
mlflow.set_registry_uri(settings.mlflow_registry_uri)
mlflow.set_experiment(settings.mlflow_experiment_name)
cfg = TrainConfig(
n_splits=args.cv,
use_undersampling=args.undersample,
cost_fn=args.cost_fn,
cost_fp=args.cost_fp,
)
# Baselines
log_run(
X, y, model_name="dummy", activation="most_frequent", cfg=cfg, dataset_hash=ds.file_hash
)
log_run(X, y, model_name="dummy", activation="stratified", cfg=cfg, dataset_hash=ds.file_hash)
# LR
log_run(X, y, model_name="lr", activation=None, cfg=cfg, dataset_hash=ds.file_hash)
# MLP with 2 activations (requirement)
log_run(X, y, model_name="mlp", activation="relu", cfg=cfg, dataset_hash=ds.file_hash)
log_run(X, y, model_name="mlp", activation="logistic", cfg=cfg, dataset_hash=ds.file_hash)
# LGBM
log_run(X, y, model_name="lgbm", activation=None, cfg=cfg, dataset_hash=ds.file_hash)
log.info("Training runs completed.")
if __name__ == "__main__":
main()