| --- |
| library_name: sklearn |
| tags: |
| - fairrelay |
| - logistics |
| - xgboost |
| - sklearn |
| - tabular-regression |
| - workload |
| - route-optimization |
| license: mit |
| --- |
| |
| # FairRelay — Workload Scoring Model (v2) |
|
|
| Part of the **[FairRelay](https://github.com/MUTHUKUMARAN-K-1/FairRelay)** AI logistics platform. |
|
|
| ## Model Description |
|
|
| Predicts delivery route workload score based on package count, weight, stops, distance, difficulty, and fragility. The workload score quantifies how demanding a route is for a driver. |
|
|
| **Version**: v2 — Retrained with realistic data including hidden confounders, heteroscedastic noise, non-linear interactions, and measurement error. Properly regularized to prevent overfitting. |
|
|
| **Type**: XGBRegressor Pipeline (StandardScaler + XGBoost) |
| **Task**: Regression |
|
|
| ### v2 vs v1 |
|
|
| | Metric | v1 | v2 | |
| |--------|----|----| |
| | Test R² | 0.9969 (suspiciously high) | **0.7577** (realistic) | |
| | Train-Test Gap | 0.0010 | **0.0156** | |
| | Why | Clean formula + 5% noise | Hidden confounders, noise, interactions | |
|
|
| ## Performance |
|
|
| - **R²**: 0.7577 |
| - **MAE**: 66.13 |
| - **RMSE**: 86.85 |
| - **Train-Test R² Gap**: 0.0156 (no overfitting) |
| - **CV R² (5-fold)**: 0.7614 ± 0.0036 |
|
|
| ## Input Features |
|
|
| | Feature | Importance | |
| |---------|-----------| |
| | `num_packages` | 0.1573 | |
| | `total_weight_kg` | 0.0183 | |
| | `num_stops` | 0.4728 | |
| | `avg_fragility` | 0.0110 | |
| | `total_distance_km` | 0.0080 | |
| | `route_difficulty_score` | 0.2582 | |
| | `estimated_time_minutes` | 0.0420 | |
| | `packages_per_stop` | 0.0212 | |
| | `weight_per_package` | 0.0069 | |
| | `distance_per_stop` | 0.0044 | |
|
|
|
|
| ## Usage |
|
|
| ```python |
| from skops import io as sio |
| from huggingface_hub import hf_hub_download |
| import numpy as np |
| |
| model_path = hf_hub_download(repo_id="muthuk1/fairrelay-workload-scoring", filename="model.skops") |
| untrusted = sio.get_untrusted_types(file=model_path) |
| model = sio.load(model_path, trusted=untrusted) |
| |
| # [num_packages, total_weight_kg, num_stops, avg_fragility, total_distance_km, |
| # route_difficulty_score, estimated_time_minutes, packages_per_stop, |
| # weight_per_package, distance_per_stop] |
| features = np.array([[25, 50.0, 15, 2.5, 12.0, 10.5, 120.0, 1.67, 2.0, 0.8]]) |
| workload = model.predict(features) |
| print(f"Workload score: {workload[0]:.1f}") |
| ``` |
|
|
| ## License |
|
|
| MIT |
|
|