Config: Platform=Pi, Workers=1
Data Dir: /ssd/new_puck/data
DEBUG: LOADED PUCK.FIT_XGS modification check
--- Training Nested XGBoost Model (Modern Era: 20202021+) ---
Loading modern era data (20202021+) from /ssd/new_puck/data...
DEBUG: Globbing /ssd/new_puck/data for */*.csv...
DEBUG: Compiling /ssd/new_puck/data/20252026/20252026_df.csv...
DEBUG: Compiling /ssd/new_puck/data/20222023/20222023_df.csv...
DEBUG: Compiling /ssd/new_puck/data/20232024/20232024_df.csv...
DEBUG: Compiling /ssd/new_puck/data/20242025/20242025_df.csv...
DEBUG: Compiling /ssd/new_puck/data/20202021/20202021_df.csv...
DEBUG: Compiling /ssd/new_puck/data/20212022/20212022_df.csv...
Total loaded rows: 2129091
Filtered for seasons 20202021 and onwards. Rows: 2129091
Fitting model and saving to /ssd/new_puck/analysis/xgs/xg_model_xgboost_nested_20202021.joblib...
--- Training XGBoost (Nested) Model ---
Applying Preprocessing Pipeline...
Preprocessing 2129091 rows. Training=True, Impute=True, Adjust=True
Correcting Attribution: Blocked Shots (Blocker -> Shooter)...
Flipping 1063845 events to Right-Attack orientation.
Imputing blocked shots using x_adj, y_adj...
/home/spoon/new_puck/puck/impute.py:54: UserWarning: Blocked shot model file not found: /home/spoon/new_puck/puck/data/blocked_shot_model_F.json. Using fallback imputation.
warnings.warn(f"Blocked shot model file not found: {path_f}. Using fallback imputation.")
/home/spoon/new_puck/puck/impute.py:66: UserWarning: Blocked shot model file not found: /home/spoon/new_puck/puck/data/blocked_shot_model_D.json. Using fallback imputation.
warnings.warn(f"Blocked shot model file not found: {path_d}. Using fallback imputation.")
Training on 732893 rows with 21 features...
15:24:45 - INFO - Fitting XGBNestedXGClassifier on 732893 rows. Calib=False
15:24:45 - INFO - XGBoost Version: 3.2.0
15:24:46 - INFO - Training Triple Spatial GLM Baselines...
15:24:46 - INFO - Fitting Spatial Block GLM...
15:25:02 - INFO - Fitting Spatial Accuracy GLM...
15:25:26 - INFO - Fitting Spatial Finish GLM...
15:25:40 - INFO - Learned Categorical Priors: ['shot_type', 'shooter_role', 'shoots_catches', 'game_state', 'relative_game_state', 'last_event_type']
15:25:41 - INFO - XGB Params (Block): {'n_estimators': 300, 'max_depth': 6, 'learning_rate': 0.05, 'random_state': 42, 'enable_categorical': True, 'objective': 'binary:logistic', 'tree_method': 'hist', 'device': 'cpu', 'eval_metric': 'logloss', 'base_score': 0.5}
15:29:19 - INFO - Fit Complete.
Training took 274.1s.
--- Evaluation (Test Set) ---
Overall xG AUC: 0.8332, LogLoss: 0.1603, Brier: 0.043442
Saving model to /ssd/new_puck/analysis/xgs/xg_model_xgboost_nested_20202021.joblib...
Generating model summary...
============================================================
GENERATING MODEL SUMMARY
============================================================
[1/5] Loading model...
Loaded XGBNestedXGClassifier
[2/5] Regenerating dashboards...
Running xgboost_nested_model_dashboard.py...
[OK] analysis/xgboost_nested_xgs/xg_model_xgboost_nested_20202021_dashboard.html
[3/5] Generating text summary...
[OK] /ssd/new_puck/analysis/xgboost_nested_xgs_20202021/model_summary.txt
[4/5] Feature analysis...
[OK] /ssd/new_puck/analysis/xgboost_nested_xgs_20202021/feature_analysis.txt
[5/5] Calibration testing...
[OK] /ssd/new_puck/analysis/xgboost_nested_xgs_20202021/calibration_results.txt
============================================================
SUMMARY COMPLETE
============================================================
Artifacts generated: 4
- xgboost_nested_model_dashboard.py: analysis/xgboost_nested_xgs/xg_model_xgboost_nested_20202021_dashboard.html
- summary: /ssd/new_puck/analysis/xgboost_nested_xgs_20202021/model_summary.txt
- feature_analysis: /ssd/new_puck/analysis/xgboost_nested_xgs_20202021/feature_analysis.txt
- calibration: /ssd/new_puck/analysis/xgboost_nested_xgs_20202021/calibration_results.txt
=== TRAINING COMPLETE ===
Model: /ssd/new_puck/analysis/xgs/xg_model_xgboost_nested_20202021.joblib
Diagnostics: /ssd/new_puck/analysis/xgboost_nested_xgs_20202021