Arko007 commited on
Commit
c944add
·
verified ·
1 Parent(s): 899654b

WeatherGPT model bundle

Browse files
Files changed (47) hide show
  1. .gitattributes +1 -0
  2. README.md +146 -0
  3. bundle.json +36 -0
  4. m1_field_mapper_v1/config.json +89 -0
  5. m1_field_mapper_v1/label_embeddings.npy +3 -0
  6. m1_field_mapper_v1/metrics.json +133 -0
  7. m1_field_mapper_v1/model.pt +3 -0
  8. m1_field_mapper_v1/special_tokens_map.json +51 -0
  9. m1_field_mapper_v1/tokenizer.json +3 -0
  10. m1_field_mapper_v1/tokenizer_config.json +54 -0
  11. m2_mos_v1/lgbm_precipitation_q05.txt +0 -0
  12. m2_mos_v1/lgbm_precipitation_q10.txt +0 -0
  13. m2_mos_v1/lgbm_precipitation_q25.txt +0 -0
  14. m2_mos_v1/lgbm_precipitation_q50.txt +0 -0
  15. m2_mos_v1/lgbm_precipitation_q75.txt +0 -0
  16. m2_mos_v1/lgbm_precipitation_q90.txt +0 -0
  17. m2_mos_v1/lgbm_precipitation_q95.txt +0 -0
  18. m2_mos_v1/lgbm_temperature_2m_q05.txt +0 -0
  19. m2_mos_v1/lgbm_temperature_2m_q10.txt +0 -0
  20. m2_mos_v1/lgbm_temperature_2m_q25.txt +0 -0
  21. m2_mos_v1/lgbm_temperature_2m_q50.txt +0 -0
  22. m2_mos_v1/lgbm_temperature_2m_q75.txt +0 -0
  23. m2_mos_v1/lgbm_temperature_2m_q90.txt +0 -0
  24. m2_mos_v1/lgbm_temperature_2m_q95.txt +0 -0
  25. m2_mos_v1/lgbm_wind_speed_10m_q05.txt +0 -0
  26. m2_mos_v1/lgbm_wind_speed_10m_q10.txt +0 -0
  27. m2_mos_v1/lgbm_wind_speed_10m_q25.txt +0 -0
  28. m2_mos_v1/lgbm_wind_speed_10m_q50.txt +0 -0
  29. m2_mos_v1/lgbm_wind_speed_10m_q75.txt +0 -0
  30. m2_mos_v1/lgbm_wind_speed_10m_q90.txt +0 -0
  31. m2_mos_v1/lgbm_wind_speed_10m_q95.txt +0 -0
  32. m2_mos_v1/metrics.json +954 -0
  33. m2_mos_v1/quantile_nets.pt +3 -0
  34. m3_intent_v1/config.json +71 -0
  35. m3_intent_v1/metrics.json +205 -0
  36. m3_intent_v1/model.pt +3 -0
  37. m3_intent_v1/special_tokens_map.json +7 -0
  38. m3_intent_v1/tokenizer.json +0 -0
  39. m3_intent_v1/tokenizer_config.json +58 -0
  40. m3_intent_v1/vocab.txt +0 -0
  41. m4_calibration_v1/heads.pt +3 -0
  42. m4_calibration_v1/isotonics.pkl +3 -0
  43. m4_calibration_v1/metrics.json +402 -0
  44. m5_trust_ranker_v1/lambdamart_precipitation.txt +0 -0
  45. m5_trust_ranker_v1/lambdamart_temperature_2m.txt +0 -0
  46. m5_trust_ranker_v1/lambdamart_wind_speed_10m.txt +0 -0
  47. m5_trust_ranker_v1/metrics.json +363 -0
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ m1_field_mapper_v1/tokenizer.json filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,146 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ library_name: weathergpt-models
4
+ tags:
5
+ - weather
6
+ - post-processing
7
+ - india
8
+ - meteorology
9
+ ---
10
+
11
+ # WeatherGPT model bundle
12
+
13
+ Five models for the WeatherGPT meteorological interoperability layer.
14
+ Every number below was produced by a training script and copied from a
15
+ `metrics.json`; none was typed by hand.
16
+
17
+ ```python
18
+ from weathergpt_models import ModelRegistry
19
+ registry = ModelRegistry.from_hub("Arko007/weathergpt-models")
20
+ print(registry.status())
21
+ ```
22
+
23
+ Each model is gated on beating the baseline it replaces. An artifact
24
+ that cannot prove its provenance, or that does not beat its baseline,
25
+ is refused at load time and the caller falls back to a deterministic
26
+ path.
27
+
28
+ ## field_mapper — `m1_field_mapper_v1`
29
+
30
+ **label-embedding bi-encoder + multitask heads**
31
+
32
+ - dataset: `d3_authoritative_parameter_tables`
33
+ - dataset sha256: `e5d3562cedf16d653f75d84adf51868d`
34
+ - split: by source table — train: CF+GRIB2+CAP; dev_zeroshot: BUFR+OpenMeteo+IMD (threshold calibration only); test_zeroshot: WRF+NCEP (never touched until the final measurement)
35
+ - trained: 2026-09-03T16:33:08.084847Z
36
+ - admission gate: **PASS** — zero-shot macro-F1 0.743 vs dict registry 0.142
37
+
38
+ | metric | model | dict registry | majority |
39
+ |---|---|---|---|
40
+ | zero-shot macro-F1 | **0.7432** | 0.1416 | 0.0217 |
41
+ | zero-shot accuracy | **0.8319** | 0.4907 | 0.4356 |
42
+ | statistic accuracy | 0.9792 | — | — |
43
+ | misassignment rate | 0.0016 | — | — |
44
+
45
+ The test set is parameter tables the model never trained on (WRF Registry, NCEP GFS inventories, the WMO BUFR element table, Open-Meteo and IMD product fields), so this measures generalisation to a schema nobody has mapped.
46
+
47
+ ## mos — `m2_mos_v1`
48
+
49
+ **monotone quantile network (pinball) + LightGBM quantile forest, blended at a validation-chosen weight, with conformalised intervals**
50
+
51
+ - dataset: `d1_multi_model_nwp_vs_era5_seamless`
52
+ - dataset sha256: `a3888e44c7a6bd09b8282f214b68b1e6`
53
+ - split: chronological 70% cutoff AND 20% spatially held-out locations
54
+ - trained: 2026-09-04T06:29:10.987471Z
55
+ - admission gate: **PASS** — positive CRPS skill against the raw ensemble on the spatial holdout for every variable
56
+
57
+ | variable | CRPS | raw ensemble CRPS | CRPS skill |
58
+ |---|---|---|---|
59
+ | temperature_2m | 0.6162 | 0.6469 | **0.047** |
60
+ | precipitation | 0.2190 | 0.2523 | **0.132** |
61
+ | wind_speed_10m | 1.6000 | 1.7570 | **0.089** |
62
+
63
+ ## intent — `m3_intent_v1`
64
+
65
+ **JointBERT: intent + BIO slots + multi-label variables on a shared encoder**
66
+
67
+ - dataset: `d4_multilingual_templated_queries_with_exact_slot_spans`
68
+ - dataset sha256: `cb2ee6c4e1d8d9857975d3362957d90c`
69
+ - split: held-out template families {sow,heat,storm} AND 20% held-out districts
70
+ - trained: 2026-09-04T08:43:34.868234Z
71
+ - admission gate: **PASS** — intent macro-F1 0.746 vs rule parser 0.166, slot F1 0.988
72
+
73
+ | metric | model | rule parser |
74
+ |---|---|---|
75
+ | intent macro-F1 | **0.7459** | 0.1664 |
76
+ | intent accuracy | **0.8361** | 0.5129 |
77
+ | slot F1 (seqeval) | 0.9878 | not supported |
78
+ | variable micro-F1 | 0.1704 | not supported |
79
+
80
+ Held out: whole template families and whole districts, so neither a memorised sentence pattern nor a memorised place name can inflate this.
81
+
82
+ | language | n | intent macro-F1 | slot F1 |
83
+ |---|---|---|---|
84
+ | as | 91 | 0.7046 | 0.9819 |
85
+ | bn | 91 | 0.7486 | 0.9922 |
86
+ | bn_latn | 91 | 0.7774 | 0.9688 |
87
+ | en | 94 | 0.7477 | 0.9824 |
88
+ | gu | 91 | 0.7242 | 0.9948 |
89
+ | hi | 91 | 0.7475 | 0.9870 |
90
+ | hi_latn | 91 | 0.7508 | 0.9691 |
91
+ | kn | 91 | 0.7679 | 0.9948 |
92
+ | ml | 89 | 0.7538 | 1.0000 |
93
+ | mr | 91 | 0.7475 | 0.9948 |
94
+ | or | 91 | 0.7644 | 0.9923 |
95
+ | pa | 91 | 0.7475 | 0.9819 |
96
+ | ta | 91 | 0.7750 | 0.9948 |
97
+ | te | 91 | 0.7475 | 0.9948 |
98
+
99
+ ## calibration — `m4_calibration_v1`
100
+
101
+ **hurdle CSGD (precipitation: P(wet) x censored shifted gamma) + Gaussian EMOS (temperature, wind), CRPS-fitted, with isotonic-refined exceedance probabilities**
102
+
103
+ - dataset: `d1_multi_model_nwp_vs_era5_seamless`
104
+ - dataset sha256: `a3888e44c7a6bd09b8282f214b68b1e6`
105
+ - split: chronological 70% cutoff AND 20% spatially held-out locations
106
+ - trained: 2026-09-04T06:00:18.494934Z
107
+ - admission gate: **PASS** — calibrated Brier beats raw ensemble frequency at every threshold
108
+
109
+ | variable | CRPS | raw ensemble CRPS | CRPS skill |
110
+ |---|---|---|---|
111
+ | precipitation | 0.2491 | 0.2315 | **-0.076** |
112
+
113
+ Precipitation exceedance, Brier score (lower is better):
114
+
115
+ | threshold | base rate | raw member count | calibrated | climatology |
116
+ |---|---|---|---|---|
117
+ | >0.1 mm | 0.3161 | 0.16660 | **0.14883** | 0.21616 |
118
+ | >1.0 mm | 0.0932 | 0.08376 | **0.07243** | 0.08455 |
119
+ | >5.0 mm | 0.0083 | 0.00909 | **0.00807** | 0.00822 |
120
+ | >10.0 mm | 0.0012 | 0.00155 | **0.00124** | 0.00124 |
121
+ | >25.0 mm | 0.0001 | 0.00014 | **0.00010** | 0.00010 |
122
+ | >50.0 mm | 0.0000 | 0.00000 | **0.00000** | 0.00000 |
123
+
124
+ > **Transfer assumption.** Trained on a 4-member multi-model ensemble; served against the 31-member GFS ensemble. Only summary statistics cross the boundary, so the interface is identical, but the spread mapping is assumed rather than measured: the ensemble API serves members only for ~the last 4 days while ERA5 truth lags ~6, so the two windows never overlap and the transfer could not be verified.
125
+
126
+ ## trust_ranker — `m5_trust_ranker_v1`
127
+
128
+ **LightGBM LambdaMART over candidate NWP sources per (location, valid time, lead) group**
129
+
130
+ - dataset: `d1_multi_model_nwp_vs_era5_seamless`
131
+ - dataset sha256: `99fd37b00135687f2c1085d0e32fb99c`
132
+ - split: chronological 70% cutoff AND 20% spatially held-out locations
133
+ - trained: 2026-09-03T16:25:33.240955Z
134
+ - admission gate: **PASS** — beats the fixed authority order on 3/3 variables
135
+
136
+ | variable | NDCG@1 | picks the best source | fixed authority does | RMSE following ranker | RMSE following fixed order |
137
+ |---|---|---|---|---|---|
138
+ | temperature_2m | 0.6876 | **0.383** | 0.346 | **1.308** | 1.443 |
139
+ | precipitation | 0.8506 | **0.237** | 0.170 | **1.056** | 1.124 |
140
+ | wind_speed_10m | 0.6777 | **0.377** | 0.317 | **3.993** | 4.582 |
141
+
142
+ ## Provenance
143
+
144
+ Bundle built 2026-09-04T09:04:25.981803Z from the `weathergpt-models` Modal volume.
145
+
146
+ Training corpora were built from Open-Meteo (multi-model NWP archives and ERA5 reanalysis), the CF standard name table, the ECMWF eccodes GRIB2 definitions, NOAA NCEP GRIB2 code tables and GFS inventories, the WRF Registry, the WMO BUFR element table, and the live SACHET/NDMA CAP feed.
bundle.json ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "built_at": "2026-09-04T09:04:25.982012Z",
3
+ "models": {
4
+ "field_mapper": {
5
+ "algorithm_version": "m1_field_mapper_v1",
6
+ "gate_ok": true,
7
+ "gate_reason": "zero-shot macro-F1 0.743 vs dict registry 0.142",
8
+ "dataset_sha256": "e5d3562cedf16d653f75d84adf51868d7082f2372f1e4e7a7caad44925925547"
9
+ },
10
+ "mos": {
11
+ "algorithm_version": "m2_mos_v1",
12
+ "gate_ok": true,
13
+ "gate_reason": "positive CRPS skill against the raw ensemble on the spatial holdout for every variable",
14
+ "dataset_sha256": "a3888e44c7a6bd09b8282f214b68b1e649ca17b3250cfcff7e6fac97645ad76a"
15
+ },
16
+ "intent": {
17
+ "algorithm_version": "m3_intent_v1",
18
+ "gate_ok": true,
19
+ "gate_reason": "intent macro-F1 0.746 vs rule parser 0.166, slot F1 0.988",
20
+ "dataset_sha256": "cb2ee6c4e1d8d9857975d3362957d90cf6ba8f8e242a4441af264c17645207fc"
21
+ },
22
+ "calibration": {
23
+ "algorithm_version": "m4_calibration_v1",
24
+ "gate_ok": true,
25
+ "gate_reason": "calibrated Brier beats raw ensemble frequency at every threshold",
26
+ "dataset_sha256": "a3888e44c7a6bd09b8282f214b68b1e649ca17b3250cfcff7e6fac97645ad76a"
27
+ },
28
+ "trust_ranker": {
29
+ "algorithm_version": "m5_trust_ranker_v1",
30
+ "gate_ok": true,
31
+ "gate_reason": "beats the fixed authority order on 3/3 variables",
32
+ "dataset_sha256": "99fd37b00135687f2c1085d0e32fb99cf67a0928114364ff7b5a6e9e43cf2339"
33
+ }
34
+ },
35
+ "skipped": []
36
+ }
m1_field_mapper_v1/config.json ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "base_model": "intfloat/multilingual-e5-base",
3
+ "max_len": 64,
4
+ "abstention_threshold": 0.5735692214965821,
5
+ "canonical_variables": [
6
+ "precipitation_probability",
7
+ "precipitation_rate",
8
+ "precipitation_amount",
9
+ "snowfall_amount",
10
+ "snow_depth",
11
+ "temperature_max",
12
+ "temperature_min",
13
+ "dewpoint_2m",
14
+ "apparent_temperature",
15
+ "soil_temperature",
16
+ "sea_surface_temperature",
17
+ "temperature_2m",
18
+ "wind_gust",
19
+ "wind_u",
20
+ "wind_v",
21
+ "wind_direction",
22
+ "wind_speed",
23
+ "humidity",
24
+ "specific_humidity",
25
+ "pressure_msl",
26
+ "pressure_surface",
27
+ "solar_radiation",
28
+ "sunshine_duration",
29
+ "cloud_cover",
30
+ "visibility",
31
+ "soil_moisture",
32
+ "evapotranspiration",
33
+ "cape",
34
+ "cin",
35
+ "lightning_density",
36
+ "thunderstorm_probability",
37
+ "wave_height",
38
+ "wave_period",
39
+ "heavy_rain_warning",
40
+ "thunderstorm_warning",
41
+ "cyclone_warning",
42
+ "heat_warning",
43
+ "cold_wave_warning",
44
+ "fog_warning",
45
+ "hail_warning",
46
+ "flood_warning",
47
+ "marine_warning",
48
+ "dust_storm_warning",
49
+ "snow_warning",
50
+ "rainfall_distribution",
51
+ "other"
52
+ ],
53
+ "statistics": [
54
+ "instant",
55
+ "accumulation",
56
+ "mean",
57
+ "max",
58
+ "min",
59
+ "probability",
60
+ "categorical"
61
+ ],
62
+ "levels": [
63
+ "surface",
64
+ "2m",
65
+ "10m",
66
+ "mean_sea_level",
67
+ "pressure_level",
68
+ "soil",
69
+ "column",
70
+ "sea_surface",
71
+ "tropopause",
72
+ "height_above_ground",
73
+ "cloud_base",
74
+ "cloud_top",
75
+ "boundary_layer",
76
+ "other"
77
+ ],
78
+ "evidence_classes": [
79
+ "forecast",
80
+ "observation",
81
+ "reanalysis",
82
+ "nowcast",
83
+ "warning",
84
+ "climatology",
85
+ "advisory",
86
+ "radar",
87
+ "satellite"
88
+ ]
89
+ }
m1_field_mapper_v1/label_embeddings.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:68e5216dbfdf600634cab6208fd49ad7f9522352630748466ddba6a114efbe7e
3
+ size 141440
m1_field_mapper_v1/metrics.json ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "algorithm_version": "m1_field_mapper_v1",
3
+ "model_kind": "label-embedding bi-encoder + multitask heads",
4
+ "base_model": "intfloat/multilingual-e5-base",
5
+ "dataset_kind": "d3_authoritative_parameter_tables",
6
+ "dataset_path": "/data/d3_fields.parquet",
7
+ "dataset_sha256": "e5d3562cedf16d653f75d84adf51868d7082f2372f1e4e7a7caad44925925547",
8
+ "split": "by source table \u2014 train: CF+GRIB2+CAP; dev_zeroshot: BUFR+OpenMeteo+IMD (threshold calibration only); test_zeroshot: WRF+NCEP (never touched until the final measurement)",
9
+ "n_train": 7286,
10
+ "n_val": 991,
11
+ "n_dev_zeroshot": 1829,
12
+ "n_test": 5140,
13
+ "epochs": 10,
14
+ "batch_size": 64,
15
+ "lr": 2e-05,
16
+ "seed": 42,
17
+ "abstention_threshold": 0.5735692214965821,
18
+ "abstention_threshold_calibrated_on": "dev_zeroshot (held-out schemas, disjoint from the reported test set)",
19
+ "trained_at": "2026-09-03T16:33:08.084847Z",
20
+ "val_accuracy": 0.9616548940464178,
21
+ "val_macro_f1": 0.8429684669968456,
22
+ "val_mapped_accuracy": 0.9017341040462428,
23
+ "val_statistic_accuracy": 0.9334006054490414,
24
+ "val_level_accuracy": 0.9667003027245207,
25
+ "val_evidence_class_accuracy": 0.9969727547931383,
26
+ "val_n": 991,
27
+ "val_abstain_precision": 0.9851668726823238,
28
+ "val_abstain_recall": 0.9743276283618582,
29
+ "val_misassignment_rate": 0.005045408678102927,
30
+ "val_hallucination_rate": 0.02119071644803229,
31
+ "dev_zeroshot_accuracy": 0.9305631492618918,
32
+ "dev_zeroshot_macro_f1": 0.7483785685720807,
33
+ "dev_zeroshot_mapped_accuracy": 0.6893617021276596,
34
+ "dev_zeroshot_statistic_accuracy": 0.963914707490432,
35
+ "dev_zeroshot_level_accuracy": 0.9732094040459267,
36
+ "dev_zeroshot_evidence_class_accuracy": 0.9852378348824494,
37
+ "dev_zeroshot_n": 1829,
38
+ "dev_zeroshot_abstain_precision": 0.9600997506234414,
39
+ "dev_zeroshot_abstain_recall": 0.9661229611041405,
40
+ "dev_zeroshot_misassignment_rate": 0.004920721705850191,
41
+ "dev_zeroshot_hallucination_rate": 0.02952433023510115,
42
+ "test_zeroshot_accuracy": 0.8319066147859923,
43
+ "test_zeroshot_macro_f1": 0.7431595406586012,
44
+ "test_zeroshot_mapped_accuracy": 0.7435367114788004,
45
+ "test_zeroshot_statistic_accuracy": 0.9791828793774319,
46
+ "test_zeroshot_level_accuracy": 0.5673151750972762,
47
+ "test_zeroshot_evidence_class_accuracy": 1.0,
48
+ "test_zeroshot_n": 5140,
49
+ "test_zeroshot_abstain_precision": 0.7422066549912434,
50
+ "test_zeroshot_abstain_recall": 0.9464046449307727,
51
+ "test_zeroshot_misassignment_rate": 0.0015564202334630351,
52
+ "test_zeroshot_hallucination_rate": 0.023346303501945526,
53
+ "baselines": {
54
+ "dict_registry_zeroshot": {
55
+ "accuracy": 0.49066147859922177,
56
+ "macro_f1": 0.14160714283554512,
57
+ "mapped_accuracy": 0.09755256807997242,
58
+ "mapped_coverage": 0.09824198552223372
59
+ },
60
+ "dict_registry_val": {
61
+ "accuracy": 0.8264379414732593,
62
+ "macro_f1": 0.034168198939607625,
63
+ "mapped_accuracy": 0.005780346820809248,
64
+ "mapped_coverage": 0.011560693641618497
65
+ },
66
+ "majority_class_zeroshot": {
67
+ "accuracy": 0.43560311284046693,
68
+ "macro_f1": 0.02167347491917217
69
+ }
70
+ },
71
+ "zeroshot_by_source": {
72
+ "ncep_gfs_idx": {
73
+ "n": 3711,
74
+ "accuracy": 0.8132578819725141,
75
+ "macro_f1": 0.8421122559197644,
76
+ "mapped_accuracy": 0.752745172283226
77
+ },
78
+ "wrf_registry": {
79
+ "n": 1429,
80
+ "accuracy": 0.8803358992302309,
81
+ "macro_f1": 0.4838467510054547,
82
+ "mapped_accuracy": 0.65
83
+ }
84
+ },
85
+ "label_space": [
86
+ "precipitation_probability",
87
+ "precipitation_rate",
88
+ "precipitation_amount",
89
+ "snowfall_amount",
90
+ "snow_depth",
91
+ "temperature_max",
92
+ "temperature_min",
93
+ "dewpoint_2m",
94
+ "apparent_temperature",
95
+ "soil_temperature",
96
+ "sea_surface_temperature",
97
+ "temperature_2m",
98
+ "wind_gust",
99
+ "wind_u",
100
+ "wind_v",
101
+ "wind_direction",
102
+ "wind_speed",
103
+ "humidity",
104
+ "specific_humidity",
105
+ "pressure_msl",
106
+ "pressure_surface",
107
+ "solar_radiation",
108
+ "sunshine_duration",
109
+ "cloud_cover",
110
+ "visibility",
111
+ "soil_moisture",
112
+ "evapotranspiration",
113
+ "cape",
114
+ "cin",
115
+ "lightning_density",
116
+ "thunderstorm_probability",
117
+ "wave_height",
118
+ "wave_period",
119
+ "heavy_rain_warning",
120
+ "thunderstorm_warning",
121
+ "cyclone_warning",
122
+ "heat_warning",
123
+ "cold_wave_warning",
124
+ "fog_warning",
125
+ "hail_warning",
126
+ "flood_warning",
127
+ "marine_warning",
128
+ "dust_storm_warning",
129
+ "snow_warning",
130
+ "rainfall_distribution",
131
+ "other"
132
+ ]
133
+ }
m1_field_mapper_v1/model.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f132d26e28d6fe4c3449d25165787da70deafdebd7c57d46ce258fa51fae68d0
3
+ size 1112338102
m1_field_mapper_v1/special_tokens_map.json ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token": {
3
+ "content": "<s>",
4
+ "lstrip": false,
5
+ "normalized": false,
6
+ "rstrip": false,
7
+ "single_word": false
8
+ },
9
+ "cls_token": {
10
+ "content": "<s>",
11
+ "lstrip": false,
12
+ "normalized": false,
13
+ "rstrip": false,
14
+ "single_word": false
15
+ },
16
+ "eos_token": {
17
+ "content": "</s>",
18
+ "lstrip": false,
19
+ "normalized": false,
20
+ "rstrip": false,
21
+ "single_word": false
22
+ },
23
+ "mask_token": {
24
+ "content": "<mask>",
25
+ "lstrip": true,
26
+ "normalized": false,
27
+ "rstrip": false,
28
+ "single_word": false
29
+ },
30
+ "pad_token": {
31
+ "content": "<pad>",
32
+ "lstrip": false,
33
+ "normalized": false,
34
+ "rstrip": false,
35
+ "single_word": false
36
+ },
37
+ "sep_token": {
38
+ "content": "</s>",
39
+ "lstrip": false,
40
+ "normalized": false,
41
+ "rstrip": false,
42
+ "single_word": false
43
+ },
44
+ "unk_token": {
45
+ "content": "<unk>",
46
+ "lstrip": false,
47
+ "normalized": false,
48
+ "rstrip": false,
49
+ "single_word": false
50
+ }
51
+ }
m1_field_mapper_v1/tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bc5c1151948923156f20bcafd54fd796705d693f8d7b56c83aec49d651f6d602
3
+ size 17082986
m1_field_mapper_v1/tokenizer_config.json ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "added_tokens_decoder": {
3
+ "0": {
4
+ "content": "<s>",
5
+ "lstrip": false,
6
+ "normalized": false,
7
+ "rstrip": false,
8
+ "single_word": false,
9
+ "special": true
10
+ },
11
+ "1": {
12
+ "content": "<pad>",
13
+ "lstrip": false,
14
+ "normalized": false,
15
+ "rstrip": false,
16
+ "single_word": false,
17
+ "special": true
18
+ },
19
+ "2": {
20
+ "content": "</s>",
21
+ "lstrip": false,
22
+ "normalized": false,
23
+ "rstrip": false,
24
+ "single_word": false,
25
+ "special": true
26
+ },
27
+ "3": {
28
+ "content": "<unk>",
29
+ "lstrip": false,
30
+ "normalized": false,
31
+ "rstrip": false,
32
+ "single_word": false,
33
+ "special": true
34
+ },
35
+ "250001": {
36
+ "content": "<mask>",
37
+ "lstrip": true,
38
+ "normalized": false,
39
+ "rstrip": false,
40
+ "single_word": false,
41
+ "special": true
42
+ }
43
+ },
44
+ "bos_token": "<s>",
45
+ "clean_up_tokenization_spaces": true,
46
+ "cls_token": "<s>",
47
+ "eos_token": "</s>",
48
+ "mask_token": "<mask>",
49
+ "model_max_length": 512,
50
+ "pad_token": "<pad>",
51
+ "sep_token": "</s>",
52
+ "tokenizer_class": "XLMRobertaTokenizer",
53
+ "unk_token": "<unk>"
54
+ }
m2_mos_v1/lgbm_precipitation_q05.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_precipitation_q10.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_precipitation_q25.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_precipitation_q50.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_precipitation_q75.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_precipitation_q90.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_precipitation_q95.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_temperature_2m_q05.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_temperature_2m_q10.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_temperature_2m_q25.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_temperature_2m_q50.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_temperature_2m_q75.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_temperature_2m_q90.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_temperature_2m_q95.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_wind_speed_10m_q05.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_wind_speed_10m_q10.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_wind_speed_10m_q25.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_wind_speed_10m_q50.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_wind_speed_10m_q75.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_wind_speed_10m_q90.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/lgbm_wind_speed_10m_q95.txt ADDED
The diff for this file is too large to render. See raw diff
 
m2_mos_v1/metrics.json ADDED
@@ -0,0 +1,954 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "algorithm_version": "m2_mos_v1",
3
+ "model_kind": "monotone quantile network (pinball) + LightGBM quantile forest, blended at a validation-chosen weight, with conformalised intervals",
4
+ "dataset_kind": "d1_multi_model_nwp_vs_era5_seamless",
5
+ "dataset_shards": 127,
6
+ "dataset_rows": 9582912,
7
+ "dataset_sha256": "a3888e44c7a6bd09b8282f214b68b1e649ca17b3250cfcff7e6fac97645ad76a",
8
+ "split": "chronological 70% cutoff AND 20% spatially held-out locations",
9
+ "split_cutoff": "2026-05-03 02:00:00+00:00",
10
+ "held_out_locations": [
11
+ "1253993",
12
+ "1254163",
13
+ "1255364",
14
+ "1256523",
15
+ "1262330",
16
+ "1263220",
17
+ "1265491",
18
+ "1266366",
19
+ "1267390",
20
+ "1269321",
21
+ "1269811",
22
+ "1270583",
23
+ "1271439",
24
+ "1271476",
25
+ "1273467",
26
+ "1273780",
27
+ "1275339",
28
+ "1275665",
29
+ "1276191",
30
+ "1276533",
31
+ "1277029",
32
+ "1278710",
33
+ "1278718",
34
+ "1279233",
35
+ "1279290"
36
+ ],
37
+ "quantiles": [
38
+ 0.05,
39
+ 0.1,
40
+ 0.25,
41
+ 0.5,
42
+ 0.75,
43
+ 0.9,
44
+ 0.95
45
+ ],
46
+ "epochs": 30,
47
+ "lr": 0.002,
48
+ "seed": 42,
49
+ "target_transforms": {
50
+ "precipitation": "cbrt"
51
+ },
52
+ "models_in_ensemble": [
53
+ "gfs_seamless",
54
+ "ecmwf_ifs025",
55
+ "icon_seamless",
56
+ "gem_seamless"
57
+ ],
58
+ "contracts": {
59
+ "dataset": "d1_mos",
60
+ "passed": true,
61
+ "n_checks": 17,
62
+ "failed": [],
63
+ "checks": [
64
+ {
65
+ "check": "non_empty",
66
+ "ok": true,
67
+ "detail": "9582912 rows < 200000",
68
+ "fatal": true
69
+ },
70
+ {
71
+ "check": "truth_present::truth_temperature_2m",
72
+ "ok": true,
73
+ "detail": "only 100.0% of truth_temperature_2m is finite \u2014 a truth source returning nulls silently produces an untrainable target",
74
+ "fatal": true
75
+ },
76
+ {
77
+ "check": "non_degenerate::fc_temperature_2m_gfs_seamless",
78
+ "ok": true,
79
+ "detail": "max |forecast - truth| = 2.41e+01; the two columns are the same data, so the learning target is identically zero",
80
+ "fatal": true
81
+ },
82
+ {
83
+ "check": "non_degenerate::fc_temperature_2m_ecmwf_ifs025",
84
+ "ok": true,
85
+ "detail": "max |forecast - truth| = 2.14e+01; the two columns are the same data, so the learning target is identically zero",
86
+ "fatal": true
87
+ },
88
+ {
89
+ "check": "non_degenerate::fc_temperature_2m_icon_seamless",
90
+ "ok": true,
91
+ "detail": "max |forecast - truth| = 2.09e+01; the two columns are the same data, so the learning target is identically zero",
92
+ "fatal": true
93
+ },
94
+ {
95
+ "check": "non_degenerate::fc_temperature_2m_gem_seamless",
96
+ "ok": true,
97
+ "detail": "max |forecast - truth| = 1.74e+01; the two columns are the same data, so the learning target is identically zero",
98
+ "fatal": true
99
+ },
100
+ {
101
+ "check": "truth_present::truth_precipitation",
102
+ "ok": true,
103
+ "detail": "only 100.0% of truth_precipitation is finite \u2014 a truth source returning nulls silently produces an untrainable target",
104
+ "fatal": true
105
+ },
106
+ {
107
+ "check": "non_degenerate::fc_precipitation_gfs_seamless",
108
+ "ok": true,
109
+ "detail": "max |forecast - truth| = 9.08e+01; the two columns are the same data, so the learning target is identically zero",
110
+ "fatal": true
111
+ },
112
+ {
113
+ "check": "non_degenerate::fc_precipitation_ecmwf_ifs025",
114
+ "ok": true,
115
+ "detail": "max |forecast - truth| = 8.78e+01; the two columns are the same data, so the learning target is identically zero",
116
+ "fatal": true
117
+ },
118
+ {
119
+ "check": "non_degenerate::fc_precipitation_icon_seamless",
120
+ "ok": true,
121
+ "detail": "max |forecast - truth| = 7.96e+01; the two columns are the same data, so the learning target is identically zero",
122
+ "fatal": true
123
+ },
124
+ {
125
+ "check": "non_degenerate::fc_precipitation_gem_seamless",
126
+ "ok": true,
127
+ "detail": "max |forecast - truth| = 6.13e+01; the two columns are the same data, so the learning target is identically zero",
128
+ "fatal": true
129
+ },
130
+ {
131
+ "check": "truth_present::truth_wind_speed_10m",
132
+ "ok": true,
133
+ "detail": "only 100.0% of truth_wind_speed_10m is finite \u2014 a truth source returning nulls silently produces an untrainable target",
134
+ "fatal": true
135
+ },
136
+ {
137
+ "check": "non_degenerate::fc_wind_speed_10m_gfs_seamless",
138
+ "ok": true,
139
+ "detail": "max |forecast - truth| = 8.06e+01; the two columns are the same data, so the learning target is identically zero",
140
+ "fatal": true
141
+ },
142
+ {
143
+ "check": "non_degenerate::fc_wind_speed_10m_ecmwf_ifs025",
144
+ "ok": true,
145
+ "detail": "max |forecast - truth| = 4.54e+01; the two columns are the same data, so the learning target is identically zero",
146
+ "fatal": true
147
+ },
148
+ {
149
+ "check": "non_degenerate::fc_wind_speed_10m_icon_seamless",
150
+ "ok": true,
151
+ "detail": "max |forecast - truth| = 4.59e+01; the two columns are the same data, so the learning target is identically zero",
152
+ "fatal": true
153
+ },
154
+ {
155
+ "check": "non_degenerate::fc_wind_speed_10m_gem_seamless",
156
+ "ok": true,
157
+ "detail": "max |forecast - truth| = 5.55e+01; the two columns are the same data, so the learning target is identically zero",
158
+ "fatal": true
159
+ },
160
+ {
161
+ "check": "lead_error_grows_with_lead",
162
+ "ok": true,
163
+ "detail": "mean |error| slope vs lead = 0.069757 per unit lead; a non-positive slope means the lead column carries no forecast-age information. profile={0.0: 1.624, 1.0: 1.792, 2.0: 1.878, 3.0: 1.94, 4.0: 1.998, 5.0: 2.053, 6.0: 2.107, 7.0: 2.153}",
164
+ "fatal": false
165
+ }
166
+ ]
167
+ },
168
+ "trained_at": "2026-09-04T06:29:10.987471Z",
169
+ "results": {
170
+ "temperature_2m": {
171
+ "target_transform": "identity",
172
+ "val": {
173
+ "rmse_model": 1.222114335614717,
174
+ "mae_model": 0.8872023132201834,
175
+ "crps_model": 0.5208244018252947,
176
+ "rmse_raw_gfs": 2.8527100298389483,
177
+ "rmse_multi_model_mean": 1.4642815738927581,
178
+ "rmse_climatology": 7.025959062620457,
179
+ "crps_raw_ensemble": 0.6847016946580681,
180
+ "crps_climatology": 3.1505055284750885,
181
+ "n": 2308464,
182
+ "rmse_skill_vs_raw_gfs": 0.571595317143498,
183
+ "rmse_skill_vs_multi_model_mean": 0.1653829718243638,
184
+ "crpss_vs_raw_ensemble": 0.23934115266738432,
185
+ "crpss_vs_climatology": 0.8346854505989758
186
+ },
187
+ "test_spatial_holdout": {
188
+ "rmse_model": 1.3656446241456335,
189
+ "mae_model": 1.0232606073986648,
190
+ "crps_model": 0.6161988665678821,
191
+ "rmse_raw_gfs": 2.720709762520984,
192
+ "rmse_multi_model_mean": 1.3639357343362464,
193
+ "rmse_climatology": 6.849395161976285,
194
+ "crps_raw_ensemble": 0.646915243902439,
195
+ "crps_climatology": 3.0837763975155266,
196
+ "n": 565800,
197
+ "rmse_skill_vs_raw_gfs": 0.4980557489233103,
198
+ "rmse_skill_vs_multi_model_mean": -0.0012529107980434606,
199
+ "crpss_vs_raw_ensemble": 0.047481300872219356,
200
+ "crpss_vs_climatology": 0.8001804323217699
201
+ },
202
+ "lightgbm_test": {
203
+ "rmse_model": 1.3042061038174662,
204
+ "mae_model": 0.9789839095896653,
205
+ "crps_model": 0.6020224106752559,
206
+ "rmse_raw_gfs": 2.720709762520984,
207
+ "rmse_multi_model_mean": 1.3639357343362464,
208
+ "rmse_climatology": 6.849395161976285,
209
+ "crps_raw_ensemble": 0.646915243902439,
210
+ "crps_climatology": 3.0837763975155266,
211
+ "n": 565800,
212
+ "rmse_skill_vs_raw_gfs": 0.5206375476783671,
213
+ "rmse_skill_vs_multi_model_mean": 0.04379211499128832,
214
+ "crpss_vs_raw_ensemble": 0.06939523167884021,
215
+ "crpss_vs_climatology": 0.8047775412120409
216
+ },
217
+ "blend_test": {
218
+ "rmse_model": 1.2984926155198142,
219
+ "mae_model": 0.9754441320378991,
220
+ "crps_model": 0.5885775177557572,
221
+ "rmse_raw_gfs": 2.720709762520984,
222
+ "rmse_multi_model_mean": 1.3639357343362464,
223
+ "rmse_climatology": 6.849395161976285,
224
+ "crps_raw_ensemble": 0.646915243902439,
225
+ "crps_climatology": 3.0837763975155266,
226
+ "n": 565800,
227
+ "rmse_skill_vs_raw_gfs": 0.5227375468684159,
228
+ "rmse_skill_vs_multi_model_mean": 0.047981086768930314,
229
+ "crpss_vs_raw_ensemble": 0.09017831423289158,
230
+ "crpss_vs_climatology": 0.8091374205244095,
231
+ "blend_weight_on_quantile_net": 0.75,
232
+ "val_crps_at_chosen_weight": 0.5137041667450696
233
+ },
234
+ "served_head": "blend",
235
+ "best_epoch": 1,
236
+ "interval_coverage_nominal": 0.8,
237
+ "interval_coverage_val_raw": 0.7163759105621746,
238
+ "interval_coverage_test_raw": 0.6240844821491693,
239
+ "interval_coverage_test_conformal": 0.7121208907741251,
240
+ "conformal_width_adjustment": 0.2141975402832017,
241
+ "stratified_test": {
242
+ "lead_age_days": {
243
+ "0": {
244
+ "n": 70725,
245
+ "rmse_model": 1.1843257515275216,
246
+ "rmse_raw_gfs": 2.356034556943101,
247
+ "crps_model": 0.5474451087849951
248
+ },
249
+ "1": {
250
+ "n": 70725,
251
+ "rmse_model": 1.254890275532229,
252
+ "rmse_raw_gfs": 2.660349631646492,
253
+ "crps_model": 0.5693126297764711
254
+ },
255
+ "2": {
256
+ "n": 70725,
257
+ "rmse_model": 1.3028933819456878,
258
+ "rmse_raw_gfs": 2.6770319319447466,
259
+ "crps_model": 0.5933842031147265
260
+ },
261
+ "3": {
262
+ "n": 70725,
263
+ "rmse_model": 1.3468917609596736,
264
+ "rmse_raw_gfs": 2.7095777650584707,
265
+ "crps_model": 0.6130523754503789
266
+ },
267
+ "4": {
268
+ "n": 70725,
269
+ "rmse_model": 1.3821612239144339,
270
+ "rmse_raw_gfs": 2.765952311239714,
271
+ "crps_model": 0.6258982118305003
272
+ },
273
+ "5": {
274
+ "n": 70725,
275
+ "rmse_model": 1.4195944854806075,
276
+ "rmse_raw_gfs": 2.7814621908999864,
277
+ "crps_model": 0.6389978276445235
278
+ },
279
+ "6": {
280
+ "n": 70725,
281
+ "rmse_model": 1.4920476416693198,
282
+ "rmse_raw_gfs": 2.8640215998285,
283
+ "crps_model": 0.6702758466587375
284
+ },
285
+ "7": {
286
+ "n": 70725,
287
+ "rmse_model": 1.509646292592035,
288
+ "rmse_raw_gfs": 2.9140656199904735,
289
+ "crps_model": 0.671224729282726
290
+ }
291
+ },
292
+ "admin1": {
293
+ "Andhra Pradesh": {
294
+ "n": 22632,
295
+ "rmse_model": 1.3273441113814415,
296
+ "rmse_raw_gfs": 2.380153614814945,
297
+ "crps_model": 0.6055389010424037
298
+ },
299
+ "Assam": {
300
+ "n": 22632,
301
+ "rmse_model": 1.0759958400999803,
302
+ "rmse_raw_gfs": 1.9411597978798434,
303
+ "crps_model": 0.46588246147662576
304
+ },
305
+ "Bihar": {
306
+ "n": 45264,
307
+ "rmse_model": 1.216638889411783,
308
+ "rmse_raw_gfs": 3.8171826341736614,
309
+ "crps_model": 0.540598054489138
310
+ },
311
+ "Gujarat": {
312
+ "n": 45264,
313
+ "rmse_model": 0.9055936550734089,
314
+ "rmse_raw_gfs": 1.696875833049953,
315
+ "crps_model": 0.368813254614343
316
+ },
317
+ "Jammu and Kashmir": {
318
+ "n": 22632,
319
+ "rmse_model": 1.9335883200612294,
320
+ "rmse_raw_gfs": 5.562739900737049,
321
+ "crps_model": 0.857728552676232
322
+ },
323
+ "Karnataka": {
324
+ "n": 22632,
325
+ "rmse_model": 0.9351441204190325,
326
+ "rmse_raw_gfs": 1.3880815905213029,
327
+ "crps_model": 0.3681778524196828
328
+ },
329
+ "Kerala": {
330
+ "n": 45264,
331
+ "rmse_model": 1.468219772245891,
332
+ "rmse_raw_gfs": 1.7218814182727982,
333
+ "crps_model": 0.7165390064762932
334
+ },
335
+ "Lakshadweep": {
336
+ "n": 22632,
337
+ "rmse_model": 0.8430250615888486,
338
+ "rmse_raw_gfs": 0.9001818774632467,
339
+ "crps_model": 0.39911419569720635
340
+ },
341
+ "Madhya Pradesh": {
342
+ "n": 22632,
343
+ "rmse_model": 1.439123295912022,
344
+ "rmse_raw_gfs": 3.8403445533494964,
345
+ "crps_model": 0.6370731672120746
346
+ },
347
+ "Maharashtra": {
348
+ "n": 67896,
349
+ "rmse_model": 1.114252785492215,
350
+ "rmse_raw_gfs": 2.349363803336744,
351
+ "crps_model": 0.4674355064685469
352
+ },
353
+ "Meghalaya": {
354
+ "n": 22632,
355
+ "rmse_model": 2.0292228948460505,
356
+ "rmse_raw_gfs": 1.8085125291369275,
357
+ "crps_model": 1.2198025983054006
358
+ },
359
+ "Nagaland": {
360
+ "n": 22632,
361
+ "rmse_model": 1.979982788822281,
362
+ "rmse_raw_gfs": 1.9321245657501265,
363
+ "crps_model": 1.0995102176785212
364
+ },
365
+ "Odisha": {
366
+ "n": 22632,
367
+ "rmse_model": 1.069771295164445,
368
+ "rmse_raw_gfs": 2.5945361941818734,
369
+ "crps_model": 0.45664445577604224
370
+ },
371
+ "Punjab": {
372
+ "n": 22632,
373
+ "rmse_model": 1.6114551796422036,
374
+ "rmse_raw_gfs": 4.661539737233807,
375
+ "crps_model": 0.6756830138088158
376
+ },
377
+ "Rajasthan": {
378
+ "n": 22632,
379
+ "rmse_model": 1.5870752892764253,
380
+ "rmse_raw_gfs": 2.6317027572687164,
381
+ "crps_model": 0.7151643118665465
382
+ },
383
+ "Tamil Nadu": {
384
+ "n": 22632,
385
+ "rmse_model": 1.4846082794342896,
386
+ "rmse_raw_gfs": 2.464116816652199,
387
+ "crps_model": 0.8089154641236861
388
+ },
389
+ "Tripura": {
390
+ "n": 22632,
391
+ "rmse_model": 0.9934986653177843,
392
+ "rmse_raw_gfs": 1.5874695745282876,
393
+ "crps_model": 0.4244716587316109
394
+ },
395
+ "West Bengal": {
396
+ "n": 67896,
397
+ "rmse_model": 1.4357546749365235,
398
+ "rmse_raw_gfs": 2.5047874215390555,
399
+ "crps_model": 0.6723525542723405
400
+ }
401
+ },
402
+ "month": {
403
+ "5": {
404
+ "n": 138600,
405
+ "rmse_model": 1.4966898519127358,
406
+ "rmse_raw_gfs": 2.9910633126464807,
407
+ "crps_model": 0.6660407844890739
408
+ },
409
+ "6": {
410
+ "n": 144000,
411
+ "rmse_model": 1.4407386885188629,
412
+ "rmse_raw_gfs": 3.046950627266546,
413
+ "crps_model": 0.6545778426327404
414
+ },
415
+ "7": {
416
+ "n": 148800,
417
+ "rmse_model": 1.3165396539544365,
418
+ "rmse_raw_gfs": 2.6643831368630155,
419
+ "crps_model": 0.596128933191208
420
+ },
421
+ "8": {
422
+ "n": 134400,
423
+ "rmse_model": 1.1824519736870651,
424
+ "rmse_raw_gfs": 2.032136949213104,
425
+ "crps_model": 0.5458993405949095
426
+ }
427
+ }
428
+ },
429
+ "n_features": 30
430
+ },
431
+ "precipitation": {
432
+ "target_transform": "cbrt",
433
+ "val": {
434
+ "rmse_model": 0.8428827776399292,
435
+ "mae_model": 0.2427521794353702,
436
+ "crps_model": 0.1721478535088143,
437
+ "rmse_raw_gfs": 1.1114283270039758,
438
+ "rmse_multi_model_mean": 0.8785176977876749,
439
+ "rmse_climatology": 0.8906731297667014,
440
+ "crps_raw_ensemble": 0.2026009084704931,
441
+ "crps_climatology": 0.2331475326079529,
442
+ "n": 2308464,
443
+ "rmse_skill_vs_raw_gfs": 0.24162201271939143,
444
+ "rmse_skill_vs_multi_model_mean": 0.04056255239647777,
445
+ "crpss_vs_raw_ensemble": 0.1503105548320579,
446
+ "crpss_vs_climatology": 0.26163553359027836
447
+ },
448
+ "test_spatial_holdout": {
449
+ "rmse_model": 0.9707679520885122,
450
+ "mae_model": 0.31641736425281,
451
+ "crps_model": 0.21904285231736526,
452
+ "rmse_raw_gfs": 1.2446863305692053,
453
+ "rmse_multi_model_mean": 1.0033929484029651,
454
+ "rmse_climatology": 1.0369841866977705,
455
+ "crps_raw_ensemble": 0.2522854226632328,
456
+ "crps_climatology": 0.30138645659748514,
457
+ "n": 565800,
458
+ "rmse_skill_vs_raw_gfs": 0.22007020705001878,
459
+ "rmse_skill_vs_multi_model_mean": 0.03251467569747224,
460
+ "crpss_vs_raw_ensemble": 0.1317657199331802,
461
+ "crpss_vs_climatology": 0.2732160071482356
462
+ },
463
+ "lightgbm_test": {
464
+ "rmse_model": 0.9858873570535508,
465
+ "mae_model": 0.31474537596631347,
466
+ "crps_model": 0.22213155294776657,
467
+ "rmse_raw_gfs": 1.2446863305692053,
468
+ "rmse_multi_model_mean": 1.0033929484029651,
469
+ "rmse_climatology": 1.0369841866977705,
470
+ "crps_raw_ensemble": 0.2522854226632328,
471
+ "crps_climatology": 0.30138645659748514,
472
+ "n": 565800,
473
+ "rmse_skill_vs_raw_gfs": 0.2079230462805064,
474
+ "rmse_skill_vs_multi_model_mean": 0.01744639662584513,
475
+ "crpss_vs_raw_ensemble": 0.11952283805044728,
476
+ "crpss_vs_climatology": 0.2629677011517707
477
+ },
478
+ "blend_test": {
479
+ "rmse_model": 0.9709036167913424,
480
+ "mae_model": 0.3140115995198069,
481
+ "crps_model": 0.21765062091343068,
482
+ "rmse_raw_gfs": 1.2446863305692053,
483
+ "rmse_multi_model_mean": 1.0033929484029651,
484
+ "rmse_climatology": 1.0369841866977705,
485
+ "crps_raw_ensemble": 0.2522854226632328,
486
+ "crps_climatology": 0.30138645659748514,
487
+ "n": 565800,
488
+ "rmse_skill_vs_raw_gfs": 0.21996121195663798,
489
+ "rmse_skill_vs_multi_model_mean": 0.03237946974147454,
490
+ "crpss_vs_raw_ensemble": 0.13728419733563013,
491
+ "crpss_vs_climatology": 0.27783542973162645,
492
+ "blend_weight_on_quantile_net": 0.8,
493
+ "val_crps_at_chosen_weight": 0.17184990127196248
494
+ },
495
+ "served_head": "blend",
496
+ "best_epoch": 5,
497
+ "interval_coverage_nominal": 0.8,
498
+ "interval_coverage_val_raw": 0.8149955988050929,
499
+ "interval_coverage_test_raw": 0.7805390597384235,
500
+ "interval_coverage_test_conformal": 0.7662849063273242,
501
+ "conformal_width_adjustment": -3.2191137949721344e-11,
502
+ "stratified_test": {
503
+ "lead_age_days": {
504
+ "0": {
505
+ "n": 70725,
506
+ "rmse_model": 0.9252347000413838,
507
+ "rmse_raw_gfs": 1.220515279231005,
508
+ "crps_model": 0.19807747755043745
509
+ },
510
+ "1": {
511
+ "n": 70725,
512
+ "rmse_model": 0.9378848756061204,
513
+ "rmse_raw_gfs": 1.3155474568964685,
514
+ "crps_model": 0.20440356817056837
515
+ },
516
+ "2": {
517
+ "n": 70725,
518
+ "rmse_model": 0.9576125505043022,
519
+ "rmse_raw_gfs": 1.3049649323740664,
520
+ "crps_model": 0.2124354410224134
521
+ },
522
+ "3": {
523
+ "n": 70725,
524
+ "rmse_model": 0.9661958853778412,
525
+ "rmse_raw_gfs": 1.3040228698547727,
526
+ "crps_model": 0.21900807578806156
527
+ },
528
+ "4": {
529
+ "n": 70725,
530
+ "rmse_model": 0.9788462093627255,
531
+ "rmse_raw_gfs": 1.4002138906447876,
532
+ "crps_model": 0.22269464713534845
533
+ },
534
+ "5": {
535
+ "n": 70725,
536
+ "rmse_model": 0.9918173937355863,
537
+ "rmse_raw_gfs": 1.1148917112205656,
538
+ "crps_model": 0.22766695499817297
539
+ },
540
+ "6": {
541
+ "n": 70725,
542
+ "rmse_model": 0.9983897737782349,
543
+ "rmse_raw_gfs": 1.1240597028734263,
544
+ "crps_model": 0.23086043242896995
545
+ },
546
+ "7": {
547
+ "n": 70725,
548
+ "rmse_model": 1.0071027624209998,
549
+ "rmse_raw_gfs": 1.1415463333156468,
550
+ "crps_model": 0.23719622144494992
551
+ }
552
+ },
553
+ "admin1": {
554
+ "Andhra Pradesh": {
555
+ "n": 22632,
556
+ "rmse_model": 0.3098720859232939,
557
+ "rmse_raw_gfs": 0.6228402060191723,
558
+ "crps_model": 0.060693444017012134
559
+ },
560
+ "Assam": {
561
+ "n": 22632,
562
+ "rmse_model": 1.3535131051244707,
563
+ "rmse_raw_gfs": 1.623757240203991,
564
+ "crps_model": 0.4020888433394672
565
+ },
566
+ "Bihar": {
567
+ "n": 45264,
568
+ "rmse_model": 0.9599137487674856,
569
+ "rmse_raw_gfs": 1.2528753602949,
570
+ "crps_model": 0.20013895720634517
571
+ },
572
+ "Gujarat": {
573
+ "n": 45264,
574
+ "rmse_model": 0.7446063945611082,
575
+ "rmse_raw_gfs": 1.2616722618928553,
576
+ "crps_model": 0.12546813657848493
577
+ },
578
+ "Jammu and Kashmir": {
579
+ "n": 22632,
580
+ "rmse_model": 0.6680619479032762,
581
+ "rmse_raw_gfs": 0.8769904895952862,
582
+ "crps_model": 0.13149523212937844
583
+ },
584
+ "Karnataka": {
585
+ "n": 22632,
586
+ "rmse_model": 0.48003025448841447,
587
+ "rmse_raw_gfs": 0.7091711614995214,
588
+ "crps_model": 0.12623000743528634
589
+ },
590
+ "Kerala": {
591
+ "n": 45264,
592
+ "rmse_model": 0.7760509432993351,
593
+ "rmse_raw_gfs": 0.8825814059568022,
594
+ "crps_model": 0.21781887943149872
595
+ },
596
+ "Lakshadweep": {
597
+ "n": 22632,
598
+ "rmse_model": 0.5072441935903247,
599
+ "rmse_raw_gfs": 0.6838023978719687,
600
+ "crps_model": 0.14684677387509834
601
+ },
602
+ "Madhya Pradesh": {
603
+ "n": 22632,
604
+ "rmse_model": 0.8985226720153585,
605
+ "rmse_raw_gfs": 1.1036450661126314,
606
+ "crps_model": 0.18203918735478788
607
+ },
608
+ "Maharashtra": {
609
+ "n": 67896,
610
+ "rmse_model": 1.4272367094645562,
611
+ "rmse_raw_gfs": 1.5203711764559946,
612
+ "crps_model": 0.2417054036596086
613
+ },
614
+ "Meghalaya": {
615
+ "n": 22632,
616
+ "rmse_model": 1.0654807702902553,
617
+ "rmse_raw_gfs": 1.5582395964042406,
618
+ "crps_model": 0.3706910450441674
619
+ },
620
+ "Nagaland": {
621
+ "n": 22632,
622
+ "rmse_model": 1.1468054859140817,
623
+ "rmse_raw_gfs": 1.5351208324778638,
624
+ "crps_model": 0.3930650412588415
625
+ },
626
+ "Odisha": {
627
+ "n": 22632,
628
+ "rmse_model": 1.4300916126431904,
629
+ "rmse_raw_gfs": 1.6537223562835355,
630
+ "crps_model": 0.3619336603751762
631
+ },
632
+ "Punjab": {
633
+ "n": 22632,
634
+ "rmse_model": 0.34747129966466817,
635
+ "rmse_raw_gfs": 0.6481732631042268,
636
+ "crps_model": 0.06668812785933295
637
+ },
638
+ "Rajasthan": {
639
+ "n": 22632,
640
+ "rmse_model": 0.3152898002761909,
641
+ "rmse_raw_gfs": 0.5214284157858788,
642
+ "crps_model": 0.034051272419615385
643
+ },
644
+ "Tamil Nadu": {
645
+ "n": 22632,
646
+ "rmse_model": 0.5150145194162353,
647
+ "rmse_raw_gfs": 0.8993951956295558,
648
+ "crps_model": 0.12478421600346763
649
+ },
650
+ "Tripura": {
651
+ "n": 22632,
652
+ "rmse_model": 0.965970675554561,
653
+ "rmse_raw_gfs": 1.303140664733477,
654
+ "crps_model": 0.24386947518627863
655
+ },
656
+ "West Bengal": {
657
+ "n": 67896,
658
+ "rmse_model": 1.1119111096403866,
659
+ "rmse_raw_gfs": 1.5507857751994174,
660
+ "crps_model": 0.3398756080749126
661
+ }
662
+ },
663
+ "month": {
664
+ "5": {
665
+ "n": 138600,
666
+ "rmse_model": 0.597851687229609,
667
+ "rmse_raw_gfs": 0.8855192262985033,
668
+ "crps_model": 0.11271525722345456
669
+ },
670
+ "6": {
671
+ "n": 144000,
672
+ "rmse_model": 0.7104028923932802,
673
+ "rmse_raw_gfs": 0.946843293381868,
674
+ "crps_model": 0.1650680315124339
675
+ },
676
+ "7": {
677
+ "n": 148800,
678
+ "rmse_model": 1.426221578076907,
679
+ "rmse_raw_gfs": 1.7174379987556732,
680
+ "crps_model": 0.34504541631617963
681
+ },
682
+ "8": {
683
+ "n": 134400,
684
+ "rmse_model": 0.8977364468524951,
685
+ "rmse_raw_gfs": 1.2195171578187352,
686
+ "crps_model": 0.2470205111931284
687
+ }
688
+ }
689
+ },
690
+ "n_features": 30
691
+ },
692
+ "wind_speed_10m": {
693
+ "target_transform": "identity",
694
+ "val": {
695
+ "rmse_model": 3.3005917700113203,
696
+ "mae_model": 2.4733660005572142,
697
+ "crps_model": 1.4314366973140966,
698
+ "rmse_raw_gfs": 8.017303424924103,
699
+ "rmse_multi_model_mean": 4.051076362160875,
700
+ "rmse_climatology": 7.06822275357402,
701
+ "crps_raw_ensemble": 1.924195202338623,
702
+ "crps_climatology": 3.2704650513439733,
703
+ "n": 2308464,
704
+ "rmse_skill_vs_raw_gfs": 0.5883164706289552,
705
+ "rmse_skill_vs_multi_model_mean": 0.18525560247628614,
706
+ "crpss_vs_raw_ensemble": 0.25608550755434734,
707
+ "crpss_vs_climatology": 0.5623140211433055
708
+ },
709
+ "test_spatial_holdout": {
710
+ "rmse_model": 3.5972819104316054,
711
+ "mae_model": 2.7015410315456347,
712
+ "crps_model": 1.599962821197312,
713
+ "rmse_raw_gfs": 7.353265516112001,
714
+ "rmse_multi_model_mean": 3.716005996719784,
715
+ "rmse_climatology": 7.231772766340355,
716
+ "crps_raw_ensemble": 1.7569688317426646,
717
+ "crps_climatology": 3.3162204716457104,
718
+ "n": 565800,
719
+ "rmse_skill_vs_raw_gfs": 0.5107912392732897,
720
+ "rmse_skill_vs_multi_model_mean": 0.031949379627745356,
721
+ "crpss_vs_raw_ensemble": 0.08936186442739846,
722
+ "crpss_vs_climatology": 0.5175342427087446
723
+ },
724
+ "lightgbm_test": {
725
+ "rmse_model": 3.741950331722376,
726
+ "mae_model": 2.798538247420573,
727
+ "crps_model": 1.7212743902852514,
728
+ "rmse_raw_gfs": 7.353265516112001,
729
+ "rmse_multi_model_mean": 3.716005996719784,
730
+ "rmse_climatology": 7.231772766340355,
731
+ "crps_raw_ensemble": 1.7569688317426646,
732
+ "crps_climatology": 3.3162204716457104,
733
+ "n": 565800,
734
+ "rmse_skill_vs_raw_gfs": 0.4911172018033001,
735
+ "rmse_skill_vs_multi_model_mean": -0.006981779638002061,
736
+ "crpss_vs_raw_ensemble": 0.020315921837958495,
737
+ "crpss_vs_climatology": 0.4809529688986419
738
+ },
739
+ "blend_test": {
740
+ "rmse_model": 3.5644423693326748,
741
+ "mae_model": 2.66861776899231,
742
+ "crps_model": 1.5982031958927945,
743
+ "rmse_raw_gfs": 7.353265516112001,
744
+ "rmse_multi_model_mean": 3.716005996719784,
745
+ "rmse_climatology": 7.231772766340355,
746
+ "crps_raw_ensemble": 1.7569688317426646,
747
+ "crps_climatology": 3.3162204716457104,
748
+ "n": 565800,
749
+ "rmse_skill_vs_raw_gfs": 0.5152572198674863,
750
+ "rmse_skill_vs_multi_model_mean": 0.04078670150718233,
751
+ "crpss_vs_raw_ensemble": 0.09036337639091585,
752
+ "crpss_vs_climatology": 0.5180648543853694,
753
+ "blend_weight_on_quantile_net": 0.6000000000000001,
754
+ "val_crps_at_chosen_weight": 1.4082464755916178
755
+ },
756
+ "served_head": "blend",
757
+ "best_epoch": 1,
758
+ "interval_coverage_nominal": 0.8,
759
+ "interval_coverage_val_raw": 0.7772423568225452,
760
+ "interval_coverage_test_raw": 0.7299946977730647,
761
+ "interval_coverage_test_conformal": 0.7531795687522093,
762
+ "conformal_width_adjustment": 0.181516265869142,
763
+ "stratified_test": {
764
+ "lead_age_days": {
765
+ "0": {
766
+ "n": 70725,
767
+ "rmse_model": 3.079161134527896,
768
+ "rmse_raw_gfs": 5.635400793171845,
769
+ "crps_model": 1.3830525337637347
770
+ },
771
+ "1": {
772
+ "n": 70725,
773
+ "rmse_model": 3.2298839388107954,
774
+ "rmse_raw_gfs": 6.799131159015639,
775
+ "crps_model": 1.4500337436750177
776
+ },
777
+ "2": {
778
+ "n": 70725,
779
+ "rmse_model": 3.4078798516324684,
780
+ "rmse_raw_gfs": 7.316794753981978,
781
+ "crps_model": 1.526504177218205
782
+ },
783
+ "3": {
784
+ "n": 70725,
785
+ "rmse_model": 3.528165254233703,
786
+ "rmse_raw_gfs": 7.509289677451512,
787
+ "crps_model": 1.5759293733149151
788
+ },
789
+ "4": {
790
+ "n": 70725,
791
+ "rmse_model": 3.6695597669745816,
792
+ "rmse_raw_gfs": 7.6396162405306995,
793
+ "crps_model": 1.6367851621541858
794
+ },
795
+ "5": {
796
+ "n": 70725,
797
+ "rmse_model": 3.8134928299668687,
798
+ "rmse_raw_gfs": 7.668099735429374,
799
+ "crps_model": 1.6984695098308433
800
+ },
801
+ "6": {
802
+ "n": 70725,
803
+ "rmse_model": 3.882380654977241,
804
+ "rmse_raw_gfs": 7.906283660162485,
805
+ "crps_model": 1.7233624108774959
806
+ },
807
+ "7": {
808
+ "n": 70725,
809
+ "rmse_model": 4.057985023663758,
810
+ "rmse_raw_gfs": 8.061045545371448,
811
+ "crps_model": 1.8055656587441016
812
+ }
813
+ },
814
+ "admin1": {
815
+ "Andhra Pradesh": {
816
+ "n": 22632,
817
+ "rmse_model": 3.145620914896796,
818
+ "rmse_raw_gfs": 11.378178435204735,
819
+ "crps_model": 1.4013278088190155
820
+ },
821
+ "Assam": {
822
+ "n": 22632,
823
+ "rmse_model": 3.1605890944767134,
824
+ "rmse_raw_gfs": 3.9799646250188654,
825
+ "crps_model": 1.3808908364542298
826
+ },
827
+ "Bihar": {
828
+ "n": 45264,
829
+ "rmse_model": 3.827019525612071,
830
+ "rmse_raw_gfs": 8.751624779714126,
831
+ "crps_model": 1.7110460342870681
832
+ },
833
+ "Gujarat": {
834
+ "n": 45264,
835
+ "rmse_model": 4.427279973364594,
836
+ "rmse_raw_gfs": 7.204104128586064,
837
+ "crps_model": 2.225277349174313
838
+ },
839
+ "Jammu and Kashmir": {
840
+ "n": 22632,
841
+ "rmse_model": 2.7997983722392186,
842
+ "rmse_raw_gfs": 6.650124215797972,
843
+ "crps_model": 1.2323404566258296
844
+ },
845
+ "Karnataka": {
846
+ "n": 22632,
847
+ "rmse_model": 2.6752803955624014,
848
+ "rmse_raw_gfs": 6.9281540270108435,
849
+ "crps_model": 1.2105770547080088
850
+ },
851
+ "Kerala": {
852
+ "n": 45264,
853
+ "rmse_model": 4.514422156121332,
854
+ "rmse_raw_gfs": 3.8358753309528892,
855
+ "crps_model": 2.229412311082572
856
+ },
857
+ "Lakshadweep": {
858
+ "n": 22632,
859
+ "rmse_model": 4.563969293475769,
860
+ "rmse_raw_gfs": 5.563933576155699,
861
+ "crps_model": 2.1429103172953208
862
+ },
863
+ "Madhya Pradesh": {
864
+ "n": 22632,
865
+ "rmse_model": 3.7108009674054347,
866
+ "rmse_raw_gfs": 10.306383065932105,
867
+ "crps_model": 1.656583333347469
868
+ },
869
+ "Maharashtra": {
870
+ "n": 67896,
871
+ "rmse_model": 3.379402015683597,
872
+ "rmse_raw_gfs": 8.152736060897684,
873
+ "crps_model": 1.5279634396571005
874
+ },
875
+ "Meghalaya": {
876
+ "n": 22632,
877
+ "rmse_model": 2.042044293371456,
878
+ "rmse_raw_gfs": 3.639975375151227,
879
+ "crps_model": 0.9298574757840934
880
+ },
881
+ "Nagaland": {
882
+ "n": 22632,
883
+ "rmse_model": 1.407540142247985,
884
+ "rmse_raw_gfs": 3.104349264891201,
885
+ "crps_model": 0.6270534348167001
886
+ },
887
+ "Odisha": {
888
+ "n": 22632,
889
+ "rmse_model": 3.905553142043025,
890
+ "rmse_raw_gfs": 8.435546495639686,
891
+ "crps_model": 1.7482469731719934
892
+ },
893
+ "Punjab": {
894
+ "n": 22632,
895
+ "rmse_model": 3.5818931444574718,
896
+ "rmse_raw_gfs": 8.409779756101189,
897
+ "crps_model": 1.6141045373855867
898
+ },
899
+ "Rajasthan": {
900
+ "n": 22632,
901
+ "rmse_model": 5.218337143692396,
902
+ "rmse_raw_gfs": 11.374424985174953,
903
+ "crps_model": 2.476216401078195
904
+ },
905
+ "Tamil Nadu": {
906
+ "n": 22632,
907
+ "rmse_model": 2.4295756964673263,
908
+ "rmse_raw_gfs": 2.6060844935297185,
909
+ "crps_model": 1.1546674091256985
910
+ },
911
+ "Tripura": {
912
+ "n": 22632,
913
+ "rmse_model": 3.8865182406412058,
914
+ "rmse_raw_gfs": 5.43548024331181,
915
+ "crps_model": 1.713167491585802
916
+ },
917
+ "West Bengal": {
918
+ "n": 67896,
919
+ "rmse_model": 3.0573754727006404,
920
+ "rmse_raw_gfs": 7.320410069650485,
921
+ "crps_model": 1.2652550972252194
922
+ }
923
+ },
924
+ "month": {
925
+ "5": {
926
+ "n": 138600,
927
+ "rmse_model": 3.5191763247198127,
928
+ "rmse_raw_gfs": 8.28826544916632,
929
+ "crps_model": 1.5554444121050266
930
+ },
931
+ "6": {
932
+ "n": 144000,
933
+ "rmse_model": 3.7637981138655268,
934
+ "rmse_raw_gfs": 8.197039578239345,
935
+ "crps_model": 1.6992715436018617
936
+ },
937
+ "7": {
938
+ "n": 148800,
939
+ "rmse_model": 3.808610582671852,
940
+ "rmse_raw_gfs": 6.733264947619298,
941
+ "crps_model": 1.6985467595652992
942
+ },
943
+ "8": {
944
+ "n": 134400,
945
+ "rmse_model": 3.235364885716086,
946
+ "rmse_raw_gfs": 5.882168720307729,
947
+ "crps_model": 1.4303237248043006
948
+ }
949
+ }
950
+ },
951
+ "n_features": 30
952
+ }
953
+ }
954
+ }
m2_mos_v1/quantile_nets.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:01989e499852366424b045e05a4cc9f72e675bbc2fc6c3b88d6868f47d78fdb5
3
+ size 1320026
m3_intent_v1/config.json ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "base_model": "google/muril-base-cased",
3
+ "max_len": 64,
4
+ "intents": [
5
+ "none",
6
+ "spray",
7
+ "irrigate",
8
+ "harvest",
9
+ "marine",
10
+ "travel",
11
+ "sow",
12
+ "warning_check"
13
+ ],
14
+ "bio_labels": [
15
+ "O",
16
+ "B-LOC",
17
+ "I-LOC",
18
+ "B-TIME",
19
+ "I-TIME",
20
+ "B-CROP",
21
+ "I-CROP"
22
+ ],
23
+ "canonical_variables": [
24
+ "precipitation_probability",
25
+ "precipitation_rate",
26
+ "precipitation_amount",
27
+ "snowfall_amount",
28
+ "snow_depth",
29
+ "temperature_max",
30
+ "temperature_min",
31
+ "dewpoint_2m",
32
+ "apparent_temperature",
33
+ "soil_temperature",
34
+ "sea_surface_temperature",
35
+ "temperature_2m",
36
+ "wind_gust",
37
+ "wind_u",
38
+ "wind_v",
39
+ "wind_direction",
40
+ "wind_speed",
41
+ "humidity",
42
+ "specific_humidity",
43
+ "pressure_msl",
44
+ "pressure_surface",
45
+ "solar_radiation",
46
+ "sunshine_duration",
47
+ "cloud_cover",
48
+ "visibility",
49
+ "soil_moisture",
50
+ "evapotranspiration",
51
+ "cape",
52
+ "cin",
53
+ "lightning_density",
54
+ "thunderstorm_probability",
55
+ "wave_height",
56
+ "wave_period",
57
+ "heavy_rain_warning",
58
+ "thunderstorm_warning",
59
+ "cyclone_warning",
60
+ "heat_warning",
61
+ "cold_wave_warning",
62
+ "fog_warning",
63
+ "hail_warning",
64
+ "flood_warning",
65
+ "marine_warning",
66
+ "dust_storm_warning",
67
+ "snow_warning",
68
+ "rainfall_distribution",
69
+ "other"
70
+ ]
71
+ }
m3_intent_v1/metrics.json ADDED
@@ -0,0 +1,205 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "algorithm_version": "m3_intent_v1",
3
+ "model_kind": "JointBERT: intent + BIO slots + multi-label variables on a shared encoder",
4
+ "base_model": "google/muril-base-cased",
5
+ "dataset_kind": "d4_multilingual_templated_queries_with_exact_slot_spans",
6
+ "dataset_path": "/data/d4_queries.parquet",
7
+ "dataset_sha256": "cb2ee6c4e1d8d9857975d3362957d90cf6ba8f8e242a4441af264c17645207fc",
8
+ "split": "held-out template families {sow,heat,storm} AND 20% held-out districts",
9
+ "n_train": 2340,
10
+ "n_val": 412,
11
+ "n_test": 1275,
12
+ "epochs": 8,
13
+ "batch_size": 32,
14
+ "lr": 3e-05,
15
+ "seed": 42,
16
+ "trained_at": "2026-09-04T08:43:34.868234Z",
17
+ "val": {
18
+ "n": 412,
19
+ "intent_accuracy": 1.0,
20
+ "intent_macro_f1": 1.0,
21
+ "slot_f1": 0.9840571742715778,
22
+ "slot_precision": 0.9955506117908788,
23
+ "slot_recall": 0.9728260869565217,
24
+ "variable_micro_f1": 0.34218436873747493,
25
+ "variable_macro_f1": 0.20806501485889486,
26
+ "variable_exact_set_match": 0.0
27
+ },
28
+ "test_heldout": {
29
+ "n": 1275,
30
+ "intent_accuracy": 0.836078431372549,
31
+ "intent_macro_f1": 0.7459041972533924,
32
+ "slot_f1": 0.9878318584070797,
33
+ "slot_precision": 0.9900221729490022,
34
+ "slot_recall": 0.9856512141280354,
35
+ "variable_micro_f1": 0.1703968716199351,
36
+ "variable_macro_f1": 0.12022848845265091,
37
+ "variable_exact_set_match": 0.0
38
+ },
39
+ "per_language_test": {
40
+ "as": {
41
+ "n": 91,
42
+ "intent_accuracy": 0.8241758241758241,
43
+ "intent_macro_f1": 0.7046130952380951,
44
+ "slot_f1": 0.9819121447028423,
45
+ "slot_precision": 0.9844559585492227,
46
+ "slot_recall": 0.979381443298969,
47
+ "variable_micro_f1": 0.16258351893095768,
48
+ "variable_macro_f1": 0.11573187976125571,
49
+ "variable_exact_set_match": 0.0
50
+ },
51
+ "bn": {
52
+ "n": 91,
53
+ "intent_accuracy": 0.8241758241758241,
54
+ "intent_macro_f1": 0.7485653235653236,
55
+ "slot_f1": 0.9922480620155039,
56
+ "slot_precision": 0.9948186528497409,
57
+ "slot_recall": 0.9896907216494846,
58
+ "variable_micro_f1": 0.16252821670428894,
59
+ "variable_macro_f1": 0.11745691007894474,
60
+ "variable_exact_set_match": 0.0
61
+ },
62
+ "bn_latn": {
63
+ "n": 91,
64
+ "intent_accuracy": 0.8241758241758241,
65
+ "intent_macro_f1": 0.7774305555555556,
66
+ "slot_f1": 0.96875,
67
+ "slot_precision": 0.9789473684210527,
68
+ "slot_recall": 0.9587628865979382,
69
+ "variable_micro_f1": 0.18472906403940886,
70
+ "variable_macro_f1": 0.13375335824197646,
71
+ "variable_exact_set_match": 0.0
72
+ },
73
+ "en": {
74
+ "n": 94,
75
+ "intent_accuracy": 0.8297872340425532,
76
+ "intent_macro_f1": 0.7477470930232558,
77
+ "slot_f1": 0.982367758186398,
78
+ "slot_precision": 0.9898477157360406,
79
+ "slot_recall": 0.975,
80
+ "variable_micro_f1": 0.16666666666666666,
81
+ "variable_macro_f1": 0.10588481102765866,
82
+ "variable_exact_set_match": 0.0
83
+ },
84
+ "gu": {
85
+ "n": 91,
86
+ "intent_accuracy": 0.7472527472527473,
87
+ "intent_macro_f1": 0.7242408999451253,
88
+ "slot_f1": 0.9948453608247423,
89
+ "slot_precision": 0.9948453608247423,
90
+ "slot_recall": 0.9948453608247423,
91
+ "variable_micro_f1": 0.16497175141242937,
92
+ "variable_macro_f1": 0.119454266228756,
93
+ "variable_exact_set_match": 0.0
94
+ },
95
+ "hi": {
96
+ "n": 91,
97
+ "intent_accuracy": 0.8241758241758241,
98
+ "intent_macro_f1": 0.747470238095238,
99
+ "slot_f1": 0.987012987012987,
100
+ "slot_precision": 0.9947643979057592,
101
+ "slot_recall": 0.979381443298969,
102
+ "variable_micro_f1": 0.17478152309612985,
103
+ "variable_macro_f1": 0.11732083168612839,
104
+ "variable_exact_set_match": 0.0
105
+ },
106
+ "hi_latn": {
107
+ "n": 91,
108
+ "intent_accuracy": 0.8351648351648352,
109
+ "intent_macro_f1": 0.7508169934640523,
110
+ "slot_f1": 0.9690721649484536,
111
+ "slot_precision": 0.9690721649484536,
112
+ "slot_recall": 0.9690721649484536,
113
+ "variable_micro_f1": 0.17262638717632553,
114
+ "variable_macro_f1": 0.11856133517082122,
115
+ "variable_exact_set_match": 0.0
116
+ },
117
+ "kn": {
118
+ "n": 91,
119
+ "intent_accuracy": 0.8901098901098901,
120
+ "intent_macro_f1": 0.7679118773946361,
121
+ "slot_f1": 0.9948453608247423,
122
+ "slot_precision": 0.9948453608247423,
123
+ "slot_recall": 0.9948453608247423,
124
+ "variable_micro_f1": 0.17067833698030635,
125
+ "variable_macro_f1": 0.12361479023030504,
126
+ "variable_exact_set_match": 0.0
127
+ },
128
+ "ml": {
129
+ "n": 89,
130
+ "intent_accuracy": 0.8426966292134831,
131
+ "intent_macro_f1": 0.753756884343037,
132
+ "slot_f1": 1.0,
133
+ "slot_precision": 1.0,
134
+ "slot_recall": 1.0,
135
+ "variable_micro_f1": 0.16666666666666666,
136
+ "variable_macro_f1": 0.12288051655026812,
137
+ "variable_exact_set_match": 0.0
138
+ },
139
+ "mr": {
140
+ "n": 91,
141
+ "intent_accuracy": 0.8241758241758241,
142
+ "intent_macro_f1": 0.747470238095238,
143
+ "slot_f1": 0.9948453608247423,
144
+ "slot_precision": 0.9948453608247423,
145
+ "slot_recall": 0.9948453608247423,
146
+ "variable_micro_f1": 0.170316301703163,
147
+ "variable_macro_f1": 0.11399250334403123,
148
+ "variable_exact_set_match": 0.0
149
+ },
150
+ "or": {
151
+ "n": 91,
152
+ "intent_accuracy": 0.8791208791208791,
153
+ "intent_macro_f1": 0.7644305846505428,
154
+ "slot_f1": 0.9922879177377892,
155
+ "slot_precision": 0.9897435897435898,
156
+ "slot_recall": 0.9948453608247423,
157
+ "variable_micro_f1": 0.1736111111111111,
158
+ "variable_macro_f1": 0.122160447935823,
159
+ "variable_exact_set_match": 0.0
160
+ },
161
+ "pa": {
162
+ "n": 91,
163
+ "intent_accuracy": 0.8241758241758241,
164
+ "intent_macro_f1": 0.747470238095238,
165
+ "slot_f1": 0.9819121447028423,
166
+ "slot_precision": 0.9844559585492227,
167
+ "slot_recall": 0.979381443298969,
168
+ "variable_micro_f1": 0.17582417582417584,
169
+ "variable_macro_f1": 0.13613372093804568,
170
+ "variable_exact_set_match": 0.0
171
+ },
172
+ "ta": {
173
+ "n": 91,
174
+ "intent_accuracy": 0.9120879120879121,
175
+ "intent_macro_f1": 0.775,
176
+ "slot_f1": 0.9948453608247423,
177
+ "slot_precision": 0.9948453608247423,
178
+ "slot_recall": 0.9948453608247423,
179
+ "variable_micro_f1": 0.17391304347826086,
180
+ "variable_macro_f1": 0.12383695029450821,
181
+ "variable_exact_set_match": 0.0
182
+ },
183
+ "te": {
184
+ "n": 91,
185
+ "intent_accuracy": 0.8241758241758241,
186
+ "intent_macro_f1": 0.747470238095238,
187
+ "slot_f1": 0.9948453608247423,
188
+ "slot_precision": 0.9948453608247423,
189
+ "slot_recall": 0.9948453608247423,
190
+ "variable_micro_f1": 0.16799091940976163,
191
+ "variable_macro_f1": 0.11866599643861585,
192
+ "variable_exact_set_match": 0.0
193
+ }
194
+ },
195
+ "baselines": {
196
+ "majority_class_test": {
197
+ "intent_accuracy": 0.504313725490196,
198
+ "intent_macro_f1": 0.08381126173096975
199
+ },
200
+ "rule_based_retrieval_planner_test": {
201
+ "intent_accuracy": 0.5129411764705882,
202
+ "intent_macro_f1": 0.16641001977410239
203
+ }
204
+ }
205
+ }
m3_intent_v1/model.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c6eef71af6e0a923ee1d9099b21c7e1b7e2f62922d36ef4601338b0c925fc933
3
+ size 950483766
m3_intent_v1/special_tokens_map.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "cls_token": "[CLS]",
3
+ "mask_token": "[MASK]",
4
+ "pad_token": "[PAD]",
5
+ "sep_token": "[SEP]",
6
+ "unk_token": "[UNK]"
7
+ }
m3_intent_v1/tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
m3_intent_v1/tokenizer_config.json ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "added_tokens_decoder": {
3
+ "0": {
4
+ "content": "[PAD]",
5
+ "lstrip": false,
6
+ "normalized": false,
7
+ "rstrip": false,
8
+ "single_word": false,
9
+ "special": true
10
+ },
11
+ "100": {
12
+ "content": "[UNK]",
13
+ "lstrip": false,
14
+ "normalized": false,
15
+ "rstrip": false,
16
+ "single_word": false,
17
+ "special": true
18
+ },
19
+ "103": {
20
+ "content": "[MASK]",
21
+ "lstrip": false,
22
+ "normalized": false,
23
+ "rstrip": false,
24
+ "single_word": false,
25
+ "special": true
26
+ },
27
+ "104": {
28
+ "content": "[CLS]",
29
+ "lstrip": false,
30
+ "normalized": false,
31
+ "rstrip": false,
32
+ "single_word": false,
33
+ "special": true
34
+ },
35
+ "105": {
36
+ "content": "[SEP]",
37
+ "lstrip": false,
38
+ "normalized": false,
39
+ "rstrip": false,
40
+ "single_word": false,
41
+ "special": true
42
+ }
43
+ },
44
+ "clean_up_tokenization_spaces": true,
45
+ "cls_token": "[CLS]",
46
+ "do_basic_tokenize": true,
47
+ "do_lower_case": false,
48
+ "lowercase": false,
49
+ "mask_token": "[MASK]",
50
+ "model_max_length": 512,
51
+ "never_split": null,
52
+ "pad_token": "[PAD]",
53
+ "sep_token": "[SEP]",
54
+ "strip_accents": false,
55
+ "tokenize_chinese_chars": true,
56
+ "tokenizer_class": "BertTokenizer",
57
+ "unk_token": "[UNK]"
58
+ }
m3_intent_v1/vocab.txt ADDED
The diff for this file is too large to render. See raw diff
 
m4_calibration_v1/heads.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:eb1b055b52ef6d3b58c245013f8e1ed658a97faa9e210494c5d09cacf08344fd
3
+ size 438162
m4_calibration_v1/isotonics.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0cfc7aa11b822db96a8f5363b7f4c53ac3ef3f51af079221f14ad2cb14230f50
3
+ size 12526
m4_calibration_v1/metrics.json ADDED
@@ -0,0 +1,402 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "algorithm_version": "m4_calibration_v1",
3
+ "model_kind": "hurdle CSGD (precipitation: P(wet) x censored shifted gamma) + Gaussian EMOS (temperature, wind), CRPS-fitted, with isotonic-refined exceedance probabilities",
4
+ "dataset_kind": "d1_multi_model_nwp_vs_era5_seamless",
5
+ "dataset_shards": 127,
6
+ "dataset_rows": 9582912,
7
+ "dataset_sha256": "a3888e44c7a6bd09b8282f214b68b1e649ca17b3250cfcff7e6fac97645ad76a",
8
+ "split": "chronological 70% cutoff AND 20% spatially held-out locations",
9
+ "split_cutoff": "2026-05-03 02:00:00+00:00",
10
+ "held_out_locations": [
11
+ "1253993",
12
+ "1254163",
13
+ "1255364",
14
+ "1256523",
15
+ "1262330",
16
+ "1263220",
17
+ "1265491",
18
+ "1266366",
19
+ "1267390",
20
+ "1269321",
21
+ "1269811",
22
+ "1270583",
23
+ "1271439",
24
+ "1271476",
25
+ "1273467",
26
+ "1273780",
27
+ "1275339",
28
+ "1275665",
29
+ "1276191",
30
+ "1276533",
31
+ "1277029",
32
+ "1278710",
33
+ "1278718",
34
+ "1279233",
35
+ "1279290"
36
+ ],
37
+ "ensemble_members_in_training": [
38
+ "gfs_seamless",
39
+ "ecmwf_ifs025",
40
+ "icon_seamless",
41
+ "gem_seamless"
42
+ ],
43
+ "transfer_assumption": "Trained on a 4-member multi-model ensemble; served against the 31-member GFS ensemble. Only summary statistics cross the boundary, so the interface is identical, but the spread mapping is assumed rather than measured: the ensemble API serves members only for ~the last 4 days while ERA5 truth lags ~6, so the two windows never overlap and the transfer could not be verified.",
44
+ "thresholds_mm": [
45
+ 0.1,
46
+ 1.0,
47
+ 5.0,
48
+ 10.0,
49
+ 25.0,
50
+ 50.0
51
+ ],
52
+ "epochs": 40,
53
+ "batch_size": 8192,
54
+ "lr": 0.0005,
55
+ "seed": 42,
56
+ "contracts": {
57
+ "dataset": "d1_mos",
58
+ "passed": true,
59
+ "n_checks": 7,
60
+ "failed": [],
61
+ "checks": [
62
+ {
63
+ "check": "non_empty",
64
+ "ok": true,
65
+ "detail": "9582912 rows < 200000",
66
+ "fatal": true
67
+ },
68
+ {
69
+ "check": "truth_present::truth_precipitation",
70
+ "ok": true,
71
+ "detail": "only 100.0% of truth_precipitation is finite \u2014 a truth source returning nulls silently produces an untrainable target",
72
+ "fatal": true
73
+ },
74
+ {
75
+ "check": "non_degenerate::fc_precipitation_gfs_seamless",
76
+ "ok": true,
77
+ "detail": "max |forecast - truth| = 9.08e+01; the two columns are the same data, so the learning target is identically zero",
78
+ "fatal": true
79
+ },
80
+ {
81
+ "check": "non_degenerate::fc_precipitation_ecmwf_ifs025",
82
+ "ok": true,
83
+ "detail": "max |forecast - truth| = 8.78e+01; the two columns are the same data, so the learning target is identically zero",
84
+ "fatal": true
85
+ },
86
+ {
87
+ "check": "non_degenerate::fc_precipitation_icon_seamless",
88
+ "ok": true,
89
+ "detail": "max |forecast - truth| = 7.96e+01; the two columns are the same data, so the learning target is identically zero",
90
+ "fatal": true
91
+ },
92
+ {
93
+ "check": "non_degenerate::fc_precipitation_gem_seamless",
94
+ "ok": true,
95
+ "detail": "max |forecast - truth| = 6.13e+01; the two columns are the same data, so the learning target is identically zero",
96
+ "fatal": true
97
+ },
98
+ {
99
+ "check": "lead_skill_decays_with_lead",
100
+ "ok": true,
101
+ "detail": "correlation slope vs lead = -0.022136 per unit lead; a non-negative slope means the lead column carries no forecast-age information. correlation={0.0: 0.2838, 1.0: 0.2591, 2.0: 0.2197, 3.0: 0.1904, 4.0: 0.1569, 5.0: 0.1476, 6.0: 0.1429, 7.0: 0.1369} mae={0.0: 0.2202, 1.0: 0.2224, 2.0: 0.229, 3.0: 0.2307, 4.0: 0.2383, 5.0: 0.1986, 6.0: 0.1914, 7.0: 0.1923}",
102
+ "fatal": false
103
+ }
104
+ ]
105
+ },
106
+ "trained_at": "2026-09-04T06:00:18.494934Z",
107
+ "results": {
108
+ "precipitation": {
109
+ "val": {
110
+ "n": 2308464,
111
+ "crps_model": 0.19540847064935063,
112
+ "crps_raw_multi_model_ensemble": 0.18529866612604734,
113
+ "crps_climatology": 0.24470208682241015,
114
+ "crpss_vs_raw_ensemble": -0.054559510517070864,
115
+ "crpss_vs_climatology": 0.2014433829035296,
116
+ "rank_histogram_deviation_raw": 1.355041653776761,
117
+ "rank_histogram_deviation_model": 82.481704196224,
118
+ "pit_mean": 0.2608602331621509,
119
+ "pit_sd": 0.37228048621090715
120
+ },
121
+ "test_spatial_holdout": {
122
+ "n": 565800,
123
+ "crps_model": 0.24913653971912905,
124
+ "crps_raw_multi_model_ensemble": 0.23151458112407208,
125
+ "crps_climatology": 0.3177883816933784,
126
+ "crpss_vs_raw_ensemble": -0.07611597727234765,
127
+ "crpss_vs_climatology": 0.21603005625450722,
128
+ "rank_histogram_deviation_raw": 0.9364397317599207,
129
+ "rank_histogram_deviation_model": 62.657088641963895,
130
+ "pit_mean": 0.31722019429064724,
131
+ "pit_sd": 0.38512205436948005
132
+ },
133
+ "exceedance": {
134
+ "0.1": {
135
+ "base_rate": 0.3160551431601272,
136
+ "brier_raw_ensemble_frequency": 0.16660038882997524,
137
+ "brier_csgd": 0.14877201838060225,
138
+ "brier_csgd_isotonic": 0.1488291571919064,
139
+ "brier_climatology": 0.21616428964215875,
140
+ "bss_raw_vs_climatology": 0.22928810718103465,
141
+ "bss_csgd_vs_climatology": 0.3117641279839448,
142
+ "bss_csgd_isotonic_vs_climatology": 0.31149979749994705,
143
+ "reliability_test": [
144
+ {
145
+ "bin": 0.0,
146
+ "n": 188444,
147
+ "mean_forecast": 0.035206716507673264,
148
+ "observed_frequency": 0.04308441765192843
149
+ },
150
+ {
151
+ "bin": 0.1,
152
+ "n": 57869,
153
+ "mean_forecast": 0.14851292967796326,
154
+ "observed_frequency": 0.16770637128687207
155
+ },
156
+ {
157
+ "bin": 0.2,
158
+ "n": 48977,
159
+ "mean_forecast": 0.25280413031578064,
160
+ "observed_frequency": 0.2598770851624232
161
+ },
162
+ {
163
+ "bin": 0.3,
164
+ "n": 64931,
165
+ "mean_forecast": 0.35200557112693787,
166
+ "observed_frequency": 0.35523863793873495
167
+ },
168
+ {
169
+ "bin": 0.4,
170
+ "n": 62396,
171
+ "mean_forecast": 0.4504602551460266,
172
+ "observed_frequency": 0.45485287518430667
173
+ },
174
+ {
175
+ "bin": 0.5,
176
+ "n": 54256,
177
+ "mean_forecast": 0.550929605960846,
178
+ "observed_frequency": 0.5524181657328222
179
+ },
180
+ {
181
+ "bin": 0.6,
182
+ "n": 36685,
183
+ "mean_forecast": 0.6509846448898315,
184
+ "observed_frequency": 0.6435055199672891
185
+ },
186
+ {
187
+ "bin": 0.7,
188
+ "n": 27807,
189
+ "mean_forecast": 0.7485253214836121,
190
+ "observed_frequency": 0.765203006437228
191
+ },
192
+ {
193
+ "bin": 0.8,
194
+ "n": 17014,
195
+ "mean_forecast": 0.8572900891304016,
196
+ "observed_frequency": 0.8775714117785354
197
+ },
198
+ {
199
+ "bin": 0.9,
200
+ "n": 7421,
201
+ "mean_forecast": 0.9317953586578369,
202
+ "observed_frequency": 0.9482549521627813
203
+ }
204
+ ],
205
+ "reliability_max_abs_gap": 0.02028132264813376
206
+ },
207
+ "1.0": {
208
+ "base_rate": 0.09324849770236833,
209
+ "brier_raw_ensemble_frequency": 0.08376259278897137,
210
+ "brier_csgd": 0.07280583047120703,
211
+ "brier_csgd_isotonic": 0.0724266509877183,
212
+ "brier_climatology": 0.08455321537861973,
213
+ "bss_raw_vs_climatology": 0.009350591649389561,
214
+ "bss_csgd_vs_climatology": 0.13893480992779805,
215
+ "bss_csgd_isotonic_vs_climatology": 0.14341931689528353,
216
+ "reliability_test": [
217
+ {
218
+ "bin": 0.0,
219
+ "n": 381515,
220
+ "mean_forecast": 0.027869325131177902,
221
+ "observed_frequency": 0.03050731950250973
222
+ },
223
+ {
224
+ "bin": 0.1,
225
+ "n": 98591,
226
+ "mean_forecast": 0.14551369845867157,
227
+ "observed_frequency": 0.15238713472832205
228
+ },
229
+ {
230
+ "bin": 0.2,
231
+ "n": 52174,
232
+ "mean_forecast": 0.23953086137771606,
233
+ "observed_frequency": 0.24247709587150687
234
+ },
235
+ {
236
+ "bin": 0.3,
237
+ "n": 19248,
238
+ "mean_forecast": 0.3403501808643341,
239
+ "observed_frequency": 0.34362011637572737
240
+ },
241
+ {
242
+ "bin": 0.4,
243
+ "n": 7815,
244
+ "mean_forecast": 0.43824002146720886,
245
+ "observed_frequency": 0.4331413947536788
246
+ },
247
+ {
248
+ "bin": 0.5,
249
+ "n": 4534,
250
+ "mean_forecast": 0.527589738368988,
251
+ "observed_frequency": 0.4799294221438024
252
+ },
253
+ {
254
+ "bin": 0.6,
255
+ "n": 931,
256
+ "mean_forecast": 0.6494585871696472,
257
+ "observed_frequency": 0.59828141783029
258
+ },
259
+ {
260
+ "bin": 0.7,
261
+ "n": 641,
262
+ "mean_forecast": 0.7516666054725647,
263
+ "observed_frequency": 0.6661466458658346
264
+ },
265
+ {
266
+ "bin": 0.8,
267
+ "n": 284,
268
+ "mean_forecast": 0.8318760991096497,
269
+ "observed_frequency": 0.7887323943661971
270
+ },
271
+ {
272
+ "bin": 0.9,
273
+ "n": 67,
274
+ "mean_forecast": 0.943511426448822,
275
+ "observed_frequency": 0.9402985074626866
276
+ }
277
+ ],
278
+ "reliability_max_abs_gap": 0.08551995960673009
279
+ },
280
+ "5.0": {
281
+ "base_rate": 0.008285613290915518,
282
+ "brier_raw_ensemble_frequency": 0.00909354012018381,
283
+ "brier_csgd": 0.008087619365909748,
284
+ "brier_csgd_isotonic": 0.008073242879627154,
285
+ "brier_climatology": 0.008216961903308924,
286
+ "bss_raw_vs_climatology": -0.10667911415311448,
287
+ "bss_csgd_vs_climatology": 0.01574091968797997,
288
+ "bss_csgd_isotonic_vs_climatology": 0.01749053060887329,
289
+ "reliability_test": [
290
+ {
291
+ "bin": 0.0,
292
+ "n": 563503,
293
+ "mean_forecast": 0.007170778699219227,
294
+ "observed_frequency": 0.007760384594225763
295
+ },
296
+ {
297
+ "bin": 0.1,
298
+ "n": 1690,
299
+ "mean_forecast": 0.13404034078121185,
300
+ "observed_frequency": 0.11952662721893491
301
+ },
302
+ {
303
+ "bin": 0.2,
304
+ "n": 192,
305
+ "mean_forecast": 0.2657313346862793,
306
+ "observed_frequency": 0.16666666666666666
307
+ },
308
+ {
309
+ "bin": 0.3,
310
+ "n": 210,
311
+ "mean_forecast": 0.3059147298336029,
312
+ "observed_frequency": 0.16666666666666666
313
+ },
314
+ {
315
+ "bin": 0.4,
316
+ "n": 164,
317
+ "mean_forecast": 0.44379666447639465,
318
+ "observed_frequency": 0.17682926829268292
319
+ },
320
+ {
321
+ "bin": 0.5,
322
+ "n": 33,
323
+ "mean_forecast": 0.5625444650650024,
324
+ "observed_frequency": 0.36363636363636365
325
+ }
326
+ ],
327
+ "reliability_max_abs_gap": 0.26696739618371174
328
+ },
329
+ "10.0": {
330
+ "base_rate": 0.0012442559208200778,
331
+ "brier_raw_ensemble_frequency": 0.0015468142453163663,
332
+ "brier_csgd": 0.0012314507042663974,
333
+ "brier_csgd_isotonic": 0.001241135828150681,
334
+ "brier_climatology": 0.001242707748023581,
335
+ "bss_raw_vs_climatology": -0.2447128037758195,
336
+ "bss_csgd_vs_climatology": 0.009058480382927447,
337
+ "bss_csgd_isotonic_vs_climatology": 0.0012649151623943533,
338
+ "reliability_test": [
339
+ {
340
+ "bin": 0.0,
341
+ "n": 565515,
342
+ "mean_forecast": 0.0013954403111711144,
343
+ "observed_frequency": 0.0011989071907906952
344
+ },
345
+ {
346
+ "bin": 0.1,
347
+ "n": 69,
348
+ "mean_forecast": 0.14208780229091644,
349
+ "observed_frequency": 0.028985507246376812
350
+ },
351
+ {
352
+ "bin": 0.2,
353
+ "n": 213,
354
+ "mean_forecast": 0.25002485513687134,
355
+ "observed_frequency": 0.11267605633802817
356
+ }
357
+ ],
358
+ "reliability_max_abs_gap": 0.13734879879884315
359
+ },
360
+ "25.0": {
361
+ "base_rate": 9.897490279250619e-05,
362
+ "brier_raw_ensemble_frequency": 0.00013940438317426652,
363
+ "brier_csgd": 9.890365410124921e-05,
364
+ "brier_csgd_isotonic": 9.876862301769767e-05,
365
+ "brier_climatology": 9.89651067611234e-05,
366
+ "bss_raw_vs_climatology": -0.4086215610392181,
367
+ "bss_csgd_vs_climatology": 0.0006209527972573792,
368
+ "bss_csgd_isotonic_vs_climatology": 0.0019853840394473687,
369
+ "reliability_test": [
370
+ {
371
+ "bin": 0.0,
372
+ "n": 565800,
373
+ "mean_forecast": 2.6817966499947943e-05,
374
+ "observed_frequency": 9.897490279250619e-05
375
+ }
376
+ ],
377
+ "reliability_max_abs_gap": 7.215693629255825e-05
378
+ },
379
+ "50.0": {
380
+ "base_rate": 0.0,
381
+ "brier_raw_ensemble_frequency": 2.9825026511134675e-06,
382
+ "brier_csgd": 1.295152181283849e-10,
383
+ "brier_csgd_isotonic": 0.0,
384
+ "brier_climatology": 0.0,
385
+ "bss_raw_vs_climatology": null,
386
+ "bss_csgd_vs_climatology": null,
387
+ "bss_csgd_isotonic_vs_climatology": null,
388
+ "reliability_test": [
389
+ {
390
+ "bin": 0.0,
391
+ "n": 565800,
392
+ "mean_forecast": 0.0,
393
+ "observed_frequency": 0.0
394
+ }
395
+ ],
396
+ "reliability_max_abs_gap": 0.0
397
+ }
398
+ },
399
+ "best_epoch": 2
400
+ }
401
+ }
402
+ }
m5_trust_ranker_v1/lambdamart_precipitation.txt ADDED
The diff for this file is too large to render. See raw diff
 
m5_trust_ranker_v1/lambdamart_temperature_2m.txt ADDED
The diff for this file is too large to render. See raw diff
 
m5_trust_ranker_v1/lambdamart_wind_speed_10m.txt ADDED
The diff for this file is too large to render. See raw diff
 
m5_trust_ranker_v1/metrics.json ADDED
@@ -0,0 +1,363 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "algorithm_version": "m5_trust_ranker_v1",
3
+ "model_kind": "LightGBM LambdaMART over candidate NWP sources per (location, valid time, lead) group",
4
+ "dataset_kind": "d1_multi_model_nwp_vs_era5_seamless",
5
+ "dataset_shards": 126,
6
+ "dataset_rows": 9507456,
7
+ "dataset_sha256": "99fd37b00135687f2c1085d0e32fb99cf67a0928114364ff7b5a6e9e43cf2339",
8
+ "split": "chronological 70% cutoff AND 20% spatially held-out locations",
9
+ "split_cutoff": "2026-05-03 02:00:00+00:00",
10
+ "held_out_locations": [
11
+ "1253993",
12
+ "1254163",
13
+ "1255364",
14
+ "1256523",
15
+ "1262330",
16
+ "1263220",
17
+ "1265491",
18
+ "1266285",
19
+ "1266436",
20
+ "1267995",
21
+ "1269507",
22
+ "1269843",
23
+ "1270583",
24
+ "1271476",
25
+ "1273467",
26
+ "1273780",
27
+ "1275339",
28
+ "1275665",
29
+ "1276533",
30
+ "1277029",
31
+ "1278710",
32
+ "1278718",
33
+ "1279259",
34
+ "1279290",
35
+ "8531979"
36
+ ],
37
+ "candidate_sources": [
38
+ "gfs_seamless",
39
+ "ecmwf_ifs025",
40
+ "icon_seamless",
41
+ "gem_seamless"
42
+ ],
43
+ "global_source_skill": {
44
+ "gfs_seamless": 1.9641944721978142,
45
+ "ecmwf_ifs025": 1.367079665900411,
46
+ "icon_seamless": 1.7157453697581226,
47
+ "gem_seamless": 1.7123094646273802
48
+ },
49
+ "heuristic_baseline": "fixed authority order from app/services/ranker.py (ecmwf_ifs025 > gfs_seamless > icon_seamless > gem_seamless)",
50
+ "seed": 42,
51
+ "trained_at": "2026-09-03T16:25:33.240955Z",
52
+ "results": {
53
+ "temperature_2m": {
54
+ "val": {
55
+ "n_groups": 100000,
56
+ "ndcg@1": 0.7208466666666667,
57
+ "ndcg@2": 0.7897074236397013,
58
+ "ndcg@3": 0.8506849236572033,
59
+ "pairwise_accuracy": 0.739555,
60
+ "top1_is_actually_best_rate": 0.42778,
61
+ "heuristic_top1_is_actually_best_rate": 0.32911,
62
+ "random_top1_is_actually_best_rate": 0.25,
63
+ "rmse_following_ranker": 1.3125434088059718,
64
+ "rmse_following_fixed_authority": 1.5771410843675335,
65
+ "rmse_multi_model_mean": 1.4040406110579566,
66
+ "rmse_oracle_best_source": 0.7596575544283094,
67
+ "rmse_skill_vs_fixed_authority": 0.16777045388280587
68
+ },
69
+ "test_spatial_holdout": {
70
+ "n_groups": 100000,
71
+ "ndcg@1": 0.6875766666666666,
72
+ "ndcg@2": 0.756992577222762,
73
+ "ndcg@3": 0.822769131721857,
74
+ "pairwise_accuracy": 0.7033866666666667,
75
+ "top1_is_actually_best_rate": 0.38323,
76
+ "heuristic_top1_is_actually_best_rate": 0.34618,
77
+ "random_top1_is_actually_best_rate": 0.25,
78
+ "rmse_following_ranker": 1.3078513677020032,
79
+ "rmse_following_fixed_authority": 1.4425198438843052,
80
+ "rmse_multi_model_mean": 1.301354316183721,
81
+ "rmse_oracle_best_source": 0.7043090230857474,
82
+ "rmse_skill_vs_fixed_authority": 0.09335641152753726
83
+ },
84
+ "source_preference_test": {
85
+ "gfs_seamless": 0.13859,
86
+ "ecmwf_ifs025": 0.52649,
87
+ "icon_seamless": 0.20994,
88
+ "gem_seamless": 0.12498
89
+ },
90
+ "global_source_mae": {
91
+ "gfs_seamless": 1.8726058638676504,
92
+ "ecmwf_ifs025": 1.2005990362540924,
93
+ "icon_seamless": 1.3909141631939614,
94
+ "gem_seamless": 1.7202068675320277
95
+ },
96
+ "source_preference_by_lead_age": {
97
+ "0": {
98
+ "gfs_seamless": 0.14061754481630429,
99
+ "ecmwf_ifs025": 0.5209597164474132,
100
+ "icon_seamless": 0.19651012200940632,
101
+ "gem_seamless": 0.14191261672687616
102
+ },
103
+ "1": {
104
+ "gfs_seamless": 0.13085448695030388,
105
+ "ecmwf_ifs025": 0.5400786557025384,
106
+ "icon_seamless": 0.2168752234537004,
107
+ "gem_seamless": 0.11219163389345728
108
+ },
109
+ "2": {
110
+ "gfs_seamless": 0.13489134891348914,
111
+ "ecmwf_ifs025": 0.5371737050703841,
112
+ "icon_seamless": 0.21046877135438022,
113
+ "gem_seamless": 0.11746617466174662
114
+ },
115
+ "3": {
116
+ "gfs_seamless": 0.14013101680432924,
117
+ "ecmwf_ifs025": 0.52527769866135,
118
+ "icon_seamless": 0.21503845058387924,
119
+ "gem_seamless": 0.11955283395044147
120
+ },
121
+ "4": {
122
+ "gfs_seamless": 0.1390918402185046,
123
+ "ecmwf_ifs025": 0.5240013656538067,
124
+ "icon_seamless": 0.20771594400819393,
125
+ "gem_seamless": 0.12919085011949472
126
+ },
127
+ "5": {
128
+ "gfs_seamless": 0.13991213247718823,
129
+ "ecmwf_ifs025": 0.5253126056100034,
130
+ "icon_seamless": 0.20919229469415343,
131
+ "gem_seamless": 0.12558296721865495
132
+ },
133
+ "6": {
134
+ "gfs_seamless": 0.14494178133978528,
135
+ "ecmwf_ifs025": 0.5117949493422047,
136
+ "icon_seamless": 0.21480417359745954,
137
+ "gem_seamless": 0.12845909572055042
138
+ }
139
+ },
140
+ "feature_importance_gain_top12": {
141
+ "deviation_from_mmm": 561462.9315155745,
142
+ "forecast": 208974.00556850433,
143
+ "hist_mae_loc": 186534.89816486835,
144
+ "lat": 142493.77583408356,
145
+ "elevation_km": 141248.66871917248,
146
+ "lon": 111639.47667622566,
147
+ "sin_doy": 98296.97267222404,
148
+ "lead_hours": 88980.94066858292,
149
+ "ensemble_sd": 82077.60612893105,
150
+ "ensemble_range": 79011.04284667969,
151
+ "cos_doy": 64228.856078863144,
152
+ "hist_mae_global": 42430.01246666908
153
+ },
154
+ "best_iteration": 317
155
+ },
156
+ "precipitation": {
157
+ "val": {
158
+ "n_groups": 100000,
159
+ "ndcg@1": 0.87298,
160
+ "ndcg@2": 0.8905865108355853,
161
+ "ndcg@3": 0.915987668597751,
162
+ "pairwise_accuracy": 0.8613666666666666,
163
+ "top1_is_actually_best_rate": 0.24427,
164
+ "heuristic_top1_is_actually_best_rate": 0.15725,
165
+ "random_top1_is_actually_best_rate": 0.25,
166
+ "rmse_following_ranker": 0.8402020590310404,
167
+ "rmse_following_fixed_authority": 0.9739464564338225,
168
+ "rmse_multi_model_mean": 0.8450147114103991,
169
+ "rmse_oracle_best_source": 0.6115646327249475,
170
+ "rmse_skill_vs_fixed_authority": 0.1373221253789425
171
+ },
172
+ "test_spatial_holdout": {
173
+ "n_groups": 100000,
174
+ "ndcg@1": 0.8506133333333334,
175
+ "ndcg@2": 0.871318834837028,
176
+ "ndcg@3": 0.9004703842208892,
177
+ "pairwise_accuracy": 0.83867,
178
+ "top1_is_actually_best_rate": 0.23657,
179
+ "heuristic_top1_is_actually_best_rate": 0.17022,
180
+ "random_top1_is_actually_best_rate": 0.25,
181
+ "rmse_following_ranker": 1.0558080791507516,
182
+ "rmse_following_fixed_authority": 1.1237206948347973,
183
+ "rmse_multi_model_mean": 1.033697447273621,
184
+ "rmse_oracle_best_source": 0.7764651956140726,
185
+ "rmse_skill_vs_fixed_authority": 0.060435494332539474
186
+ },
187
+ "source_preference_test": {
188
+ "gfs_seamless": 0.25322,
189
+ "ecmwf_ifs025": 0.70541,
190
+ "icon_seamless": 0.03243,
191
+ "gem_seamless": 0.00894
192
+ },
193
+ "global_source_mae": {
194
+ "gfs_seamless": 0.15934710336294858,
195
+ "ecmwf_ifs025": 0.16231781093521164,
196
+ "icon_seamless": 0.16516101263131422,
197
+ "gem_seamless": 0.1877181223425472
198
+ },
199
+ "source_preference_by_lead_age": {
200
+ "0": {
201
+ "gfs_seamless": 0.2185612300933553,
202
+ "ecmwf_ifs025": 0.7336628226249313,
203
+ "icon_seamless": 0.0378226249313564,
204
+ "gem_seamless": 0.009953322350356947
205
+ },
206
+ "1": {
207
+ "gfs_seamless": 0.2389165973954004,
208
+ "ecmwf_ifs025": 0.7151565530617899,
209
+ "icon_seamless": 0.03657522859517872,
210
+ "gem_seamless": 0.009351620947630923
211
+ },
212
+ "2": {
213
+ "gfs_seamless": 0.25274249422632794,
214
+ "ecmwf_ifs025": 0.7036662817551963,
215
+ "icon_seamless": 0.03269341801385681,
216
+ "gem_seamless": 0.010897806004618938
217
+ },
218
+ "3": {
219
+ "gfs_seamless": 0.2522766078542971,
220
+ "ecmwf_ifs025": 0.7066021627774616,
221
+ "icon_seamless": 0.031018782014797953,
222
+ "gem_seamless": 0.010102447353443369
223
+ },
224
+ "4": {
225
+ "gfs_seamless": 0.24287680660701996,
226
+ "ecmwf_ifs025": 0.7143840330350998,
227
+ "icon_seamless": 0.03482450103234687,
228
+ "gem_seamless": 0.007914659325533379
229
+ },
230
+ "5": {
231
+ "gfs_seamless": 0.26553208939922085,
232
+ "ecmwf_ifs025": 0.6997471122958102,
233
+ "icon_seamless": 0.026997471122958104,
234
+ "gem_seamless": 0.007723327182010799
235
+ },
236
+ "6": {
237
+ "gfs_seamless": 0.3035983624218918,
238
+ "ecmwf_ifs025": 0.6628600158011922,
239
+ "icon_seamless": 0.026862026862026864,
240
+ "gem_seamless": 0.006679594914889032
241
+ }
242
+ },
243
+ "feature_importance_gain_top12": {
244
+ "hist_mae_global": 940183.9317703247,
245
+ "is_ecmwf_ifs025": 683086.1427764893,
246
+ "authority_prior": 642209.5022583008,
247
+ "forecast": 329997.51307201385,
248
+ "ensemble_sd": 291488.46880054474,
249
+ "is_gfs_seamless": 232641.89338493347,
250
+ "deviation_from_mmm": 231666.78859329224,
251
+ "is_gem_seamless": 88887.42011833191,
252
+ "is_icon_seamless": 71299.7080335617,
253
+ "ensemble_range": 54412.34693145752,
254
+ "elevation_km": 13131.839279174805,
255
+ "sin_doy": 10061.122233390808
256
+ },
257
+ "best_iteration": 47
258
+ },
259
+ "wind_speed_10m": {
260
+ "val": {
261
+ "n_groups": 100000,
262
+ "ndcg@1": 0.7322866666666665,
263
+ "ndcg@2": 0.7941258411211456,
264
+ "ndcg@3": 0.8538938958091322,
265
+ "pairwise_accuracy": 0.7450583333333334,
266
+ "top1_is_actually_best_rate": 0.43945,
267
+ "heuristic_top1_is_actually_best_rate": 0.32276,
268
+ "random_top1_is_actually_best_rate": 0.25,
269
+ "rmse_following_ranker": 3.514955163298673,
270
+ "rmse_following_fixed_authority": 4.451352771911029,
271
+ "rmse_multi_model_mean": 3.8363071004222276,
272
+ "rmse_oracle_best_source": 2.0377160253578026,
273
+ "rmse_skill_vs_fixed_authority": 0.21036248003555724
274
+ },
275
+ "test_spatial_holdout": {
276
+ "n_groups": 100000,
277
+ "ndcg@1": 0.6777266666666667,
278
+ "ndcg@2": 0.7450729646651106,
279
+ "ndcg@3": 0.8102940232036031,
280
+ "pairwise_accuracy": 0.6857766666666667,
281
+ "top1_is_actually_best_rate": 0.37749,
282
+ "heuristic_top1_is_actually_best_rate": 0.31657,
283
+ "random_top1_is_actually_best_rate": 0.25,
284
+ "rmse_following_ranker": 3.9933375389515975,
285
+ "rmse_following_fixed_authority": 4.582124158073415,
286
+ "rmse_multi_model_mean": 3.6626370776395523,
287
+ "rmse_oracle_best_source": 2.081491364382759,
288
+ "rmse_skill_vs_fixed_authority": 0.1284964350178972
289
+ },
290
+ "source_preference_test": {
291
+ "gfs_seamless": 0.11678,
292
+ "ecmwf_ifs025": 0.49665,
293
+ "icon_seamless": 0.16949,
294
+ "gem_seamless": 0.21708
295
+ },
296
+ "global_source_mae": {
297
+ "gfs_seamless": 3.8606304493628434,
298
+ "ecmwf_ifs025": 2.7383221505119293,
299
+ "icon_seamless": 3.591160933449092,
300
+ "gem_seamless": 3.2290034040075652
301
+ },
302
+ "source_preference_by_lead_age": {
303
+ "0": {
304
+ "gfs_seamless": 0.13070887264435652,
305
+ "ecmwf_ifs025": 0.5199517135001006,
306
+ "icon_seamless": 0.13855542887800953,
307
+ "gem_seamless": 0.21078398497753337
308
+ },
309
+ "1": {
310
+ "gfs_seamless": 0.111467307820744,
311
+ "ecmwf_ifs025": 0.5061777866826955,
312
+ "icon_seamless": 0.15701596206505042,
313
+ "gem_seamless": 0.22533894343151006
314
+ },
315
+ "2": {
316
+ "gfs_seamless": 0.10802147010585955,
317
+ "ecmwf_ifs025": 0.5100641121216639,
318
+ "icon_seamless": 0.160205755181154,
319
+ "gem_seamless": 0.2217086625913225
320
+ },
321
+ "3": {
322
+ "gfs_seamless": 0.11501015619527911,
323
+ "ecmwf_ifs025": 0.4943615605519367,
324
+ "icon_seamless": 0.17748826784338445,
325
+ "gem_seamless": 0.21314001540939972
326
+ },
327
+ "4": {
328
+ "gfs_seamless": 0.11860139860139861,
329
+ "ecmwf_ifs025": 0.4966433566433566,
330
+ "icon_seamless": 0.17027972027972027,
331
+ "gem_seamless": 0.21447552447552448
332
+ },
333
+ "5": {
334
+ "gfs_seamless": 0.12458893871449925,
335
+ "ecmwf_ifs025": 0.47914798206278025,
336
+ "icon_seamless": 0.18071748878923766,
337
+ "gem_seamless": 0.21554559043348281
338
+ },
339
+ "6": {
340
+ "gfs_seamless": 0.10891827738216345,
341
+ "ecmwf_ifs025": 0.46931163106137674,
342
+ "icon_seamless": 0.20318752119362496,
343
+ "gem_seamless": 0.21858257036283485
344
+ }
345
+ },
346
+ "feature_importance_gain_top12": {
347
+ "deviation_from_mmm": 466693.95559215546,
348
+ "forecast": 265235.7040336132,
349
+ "lat": 188015.76180005074,
350
+ "elevation_km": 162148.13467025757,
351
+ "hist_mae_loc": 139826.11568069458,
352
+ "lon": 132947.95070505142,
353
+ "ensemble_sd": 69248.41268205643,
354
+ "lead_hours": 63762.36979341507,
355
+ "cos_doy": 51383.44154548645,
356
+ "sin_doy": 46480.552523851395,
357
+ "ensemble_range": 33805.76146531105,
358
+ "hist_mae_loc_lead": 31714.90187072754
359
+ },
360
+ "best_iteration": 237
361
+ }
362
+ }
363
+ }