INFO:puck.fit_xgboost_tensor:Fitting XGBTensorXGClassifier on 732893 rows.
INFO:puck.fit_xgboost_tensor: Generating Tensor Product Spline Basis (5x5)...
INFO:puck.fit_xgboost_tensor: [ALIGNMENT CHECK] Correlation(distance, y_block): 0.9391
INFO:puck.fit_xgboost_tensor: [ALIGNMENT CHECK] Block Rate in Training DF: 0.2625
INFO:puck.fit_xgboost_tensor: Block Model Balance (scale_pos_weight): 2.81
INFO:puck.fit_xgboost_tensor:Fit Complete.
Config: Platform=Pi, Workers=1
Data Dir: /ssd/new_puck/data
============================================================
MODERN ERA TRAINING: Pure Spatial XGBoost (Tensor)
============================================================
Loading and aggregating 6 seasons: ['20202021', '20212022', '20222023', '20232024', '20242025', '20252026']
[OK] 20202021: 245298 events loaded.
[OK] 20212022: 375226 events loaded.
[OK] 20222023: 379340 events loaded.
[OK] 20232024: 383457 events loaded.
[OK] 20242025: 388180 events loaded.
[OK] 20252026: 357590 events loaded.
Total Modern Era Dataset: 2129091 events.
Verifying Blocked Shot Enrichment...
Blocked Shot Type Distribution:
shot_type
NaN 241352
Name: count, dtype: int64
Unknown Fraction: 100.0%
WARNING: Data stream appears UNENRICHED. Shot type responsiveness will be minimal.
Starting training session...
--- Training XGBoost (Tensor - No GLM) Model ---
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...
Training on 732893 rows with 21 features...
Training took 526.5s.
--- Evaluation (Test Set) ---
Overall xG AUC: 0.8311, LogLoss: 0.2830, Brier: 0.087194
Saving model to /ssd/new_puck/analysis/xgs/xg_model_xgboost_tensor_modern_era.joblib...
Generating model summary...
============================================================
GENERATING MODEL SUMMARY
============================================================
[1/5] Loading model...
Loaded XGBTensorXGClassifier
[2/5] Regenerating dashboards...
Running xgboost_tensor_model_dashboard.py...
[OK] analysis/xgboost_tensor_xgs_modern/xg_model_xgboost_tensor_modern_era_dashboard.html
[3/5] Generating text summary...
[OK] /ssd/new_puck/analysis/xgboost_tensor_xgs_modern/model_summary.txt
[4/5] Feature analysis...
[OK] /ssd/new_puck/analysis/xgboost_tensor_xgs_modern/feature_analysis.txt
[5/6] Calibration testing...
[OK] /ssd/new_puck/analysis/xgboost_tensor_xgs_modern/calibration_results.txt
[6/6] Predictive power analysis...
Skipping Predictive Analysis (run_predictive_analysis=False)
============================================================
SUMMARY COMPLETE
============================================================
Artifacts generated: 4
- xgboost_tensor_model_dashboard.py: analysis/xgboost_tensor_xgs_modern/xg_model_xgboost_tensor_modern_era_dashboard.html
- summary: /ssd/new_puck/analysis/xgboost_tensor_xgs_modern/model_summary.txt
- feature_analysis: /ssd/new_puck/analysis/xgboost_tensor_xgs_modern/feature_analysis.txt
- calibration: /ssd/new_puck/analysis/xgboost_tensor_xgs_modern/calibration_results.txt
============================================================
MODERN ERA TRAINING COMPLETE
Model: /ssd/new_puck/analysis/xgs/xg_model_xgboost_tensor_modern_era.joblib
Dashboard: /ssd/new_puck/analysis/xgboost_tensor_xgs_modern/xg_model_xgboost_tensor_modern_era_dashboard.html
============================================================