{ "best_model_name": "RF (n=300)", "feature_columns": [ "grid_position", "driver_id_enc", "constructor_id_enc", "circuit_id_enc", "season", "round", "temp_max", "precipitation", "windspeed_max", "driver_avg_change", "driver_circuit_avg", "constructor_avg_change", "is_pitlane_start", "driver_dnf_rate", "constructor_dnf_rate", "championship_position", "quali_time_sec", "quali_gap_to_pole", "quali_speed_fl", "driver_race_pace" ], "label_map": { "Gained": 0, "Held": 1, "Lost": 2 }, "train_seasons": [ 2020, 2021, 2022, 2023 ], "val_seasons": [ 2024 ], "test_seasons": [ 2025 ], "split_strategy": "season-based (no random split)", "imputer": "SimpleImputer(strategy=median) inside Pipeline", "class_weight": "balanced (RF only)", "threshold_config": { "Lost": 1.0 }, "iteration_summary": [ {"iteration": "1 – Baseline", "model": "Logistic Regression", "cv_f1": 0.3605, "cv_std": 0.0225, "cv_acc": 0.3942}, {"iteration": "1 – Baseline", "model": "RF (n=100)", "cv_f1": 0.5380, "cv_std": 0.0198, "cv_acc": 0.5600}, {"iteration": "2 – Weather", "model": "Logistic Regression", "cv_f1": 0.3624, "cv_std": 0.0171, "cv_acc": 0.3888}, {"iteration": "2 – Weather", "model": "RF (n=200)", "cv_f1": 0.5275, "cv_std": 0.0180, "cv_acc": 0.5542}, {"iteration": "2 – Weather", "model": "XGBoost (n=200)", "cv_f1": 0.5358, "cv_std": 0.0175, "cv_acc": 0.5439}, {"iteration": "3 – History", "model": "RF (n=300)", "cv_f1": 0.5358, "cv_std": 0.0184, "cv_acc": 0.5772}, {"iteration": "3 – History", "model": "XGBoost (n=300)", "cv_f1": 0.5406, "cv_std": 0.0304, "cv_acc": 0.5523}, {"iteration": "3 – History", "model": "GradBoost (n=200)", "cv_f1": 0.5551, "cv_std": 0.0241, "cv_acc": 0.5772}, {"iteration": "4 – Quali/Pace", "model": "RF (n=300)", "cv_f1": 0.5200, "cv_std": 0.0183, "cv_acc": 0.5642}, {"iteration": "4 – Quali/Pace", "model": "XGBoost (n=300)", "cv_f1": 0.5414, "cv_std": 0.0310, "cv_acc": 0.5535}, {"iteration": "4 – Quali/Pace", "model": "GradBoost (n=200)", "cv_f1": 0.5497, "cv_std": 0.0204, "cv_acc": 0.5718} ], "results": { "RF (n=300)": { "val_2024": { "accuracy": 0.5658, "f1_weighted": 0.5517 }, "test_2025": { "accuracy": 0.5658, "f1_weighted": 0.5396 } }, "XGBoost (n=300)": { "val_2024": { "accuracy": 0.428, "f1_weighted": 0.4468 }, "test_2025": { "accuracy": 0.5094, "f1_weighted": 0.515 } }, "GradBoost (n=200)": { "val_2024": { "accuracy": 0.4885, "f1_weighted": 0.5039 }, "test_2025": { "accuracy": 0.5115, "f1_weighted": 0.5177 } } }, "best_model_final": { "val_2024": { "baseline": { "accuracy": 0.5658, "f1_weighted": 0.5517, "f1_macro": 0.4656 }, "threshold": { "accuracy": 0.5658, "f1_weighted": 0.5517, "f1_macro": 0.4656 } }, "test_2025": { "baseline": { "accuracy": 0.5658, "f1_weighted": 0.5396, "f1_macro": 0.4872 }, "threshold": { "accuracy": 0.5658, "f1_weighted": 0.5396, "f1_macro": 0.4872 } } } }