autogluon.timeseries 1.1.2b20241112__tar.gz → 1.1.2b20241113__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/PKG-INFO +1 -1
  2. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/metrics/__init__.py +13 -3
  3. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/metrics/point.py +50 -0
  4. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/version.py +1 -1
  5. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon.timeseries.egg-info/PKG-INFO +1 -1
  6. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon.timeseries.egg-info/requires.txt +3 -3
  7. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/setup.cfg +0 -0
  8. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/setup.py +0 -0
  9. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/__init__.py +0 -0
  10. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/configs/__init__.py +0 -0
  11. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/configs/presets_configs.py +0 -0
  12. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/dataset/__init__.py +0 -0
  13. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/dataset/ts_dataframe.py +0 -0
  14. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/evaluator.py +0 -0
  15. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/learner.py +0 -0
  16. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/metrics/abstract.py +0 -0
  17. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/metrics/quantile.py +0 -0
  18. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/metrics/utils.py +0 -0
  19. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/__init__.py +0 -0
  20. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/abstract/__init__.py +0 -0
  21. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/abstract/abstract_timeseries_model.py +0 -0
  22. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/abstract/model_trial.py +0 -0
  23. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/autogluon_tabular/__init__.py +0 -0
  24. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/autogluon_tabular/mlforecast.py +0 -0
  25. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/autogluon_tabular/transforms.py +0 -0
  26. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/autogluon_tabular/utils.py +0 -0
  27. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/chronos/__init__.py +0 -0
  28. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/chronos/model.py +0 -0
  29. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/chronos/pipeline/__init__.py +0 -0
  30. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/chronos/pipeline/base.py +0 -0
  31. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/chronos/pipeline/chronos.py +0 -0
  32. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/chronos/pipeline/chronos_bolt.py +0 -0
  33. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/chronos/pipeline/utils.py +0 -0
  34. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/ensemble/__init__.py +0 -0
  35. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/ensemble/abstract_timeseries_ensemble.py +0 -0
  36. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/ensemble/greedy_ensemble.py +0 -0
  37. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/gluonts/__init__.py +0 -0
  38. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/gluonts/abstract_gluonts.py +0 -0
  39. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/gluonts/torch/__init__.py +0 -0
  40. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/gluonts/torch/models.py +0 -0
  41. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/local/__init__.py +0 -0
  42. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/local/abstract_local_model.py +0 -0
  43. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/local/naive.py +0 -0
  44. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/local/npts.py +0 -0
  45. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/local/statsforecast.py +0 -0
  46. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/multi_window/__init__.py +0 -0
  47. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/multi_window/multi_window_model.py +0 -0
  48. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/models/presets.py +0 -0
  49. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/predictor.py +0 -0
  50. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/regressor.py +0 -0
  51. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/splitter.py +0 -0
  52. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/trainer/__init__.py +0 -0
  53. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/trainer/abstract_trainer.py +0 -0
  54. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/trainer/auto_trainer.py +0 -0
  55. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/transforms/__init__.py +0 -0
  56. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/transforms/scaler.py +0 -0
  57. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/utils/__init__.py +0 -0
  58. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/utils/datetime/__init__.py +0 -0
  59. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/utils/datetime/base.py +0 -0
  60. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/utils/datetime/lags.py +0 -0
  61. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/utils/datetime/seasonality.py +0 -0
  62. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/utils/datetime/time_features.py +0 -0
  63. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/utils/features.py +0 -0
  64. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/utils/forecast.py +0 -0
  65. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon/timeseries/utils/warning_filters.py +0 -0
  66. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon.timeseries.egg-info/SOURCES.txt +0 -0
  67. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon.timeseries.egg-info/dependency_links.txt +0 -0
  68. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon.timeseries.egg-info/namespace_packages.txt +0 -0
  69. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon.timeseries.egg-info/top_level.txt +0 -0
  70. {autogluon.timeseries-1.1.2b20241112 → autogluon.timeseries-1.1.2b20241113}/src/autogluon.timeseries.egg-info/zip-safe +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: autogluon.timeseries
3
- Version: 1.1.2b20241112
3
+ Version: 1.1.2b20241113
4
4
  Summary: Fast and Accurate ML in 3 Lines of Code
5
5
  Home-page: https://github.com/autogluon/autogluon
6
6
  Author: AutoGluon Community
@@ -2,7 +2,7 @@ from pprint import pformat
2
2
  from typing import Type, Union
3
3
 
4
4
  from .abstract import TimeSeriesScorer
5
- from .point import MAE, MAPE, MASE, MSE, RMSE, RMSLE, RMSSE, SMAPE, WAPE
5
+ from .point import MAE, MAPE, MASE, MSE, RMSE, RMSLE, RMSSE, SMAPE, WAPE, WCD
6
6
  from .quantile import SQL, WQL
7
7
 
8
8
  __all__ = [
@@ -16,6 +16,7 @@ __all__ = [
16
16
  "RMSSE",
17
17
  "SQL",
18
18
  "WAPE",
19
+ "WCD",
19
20
  "WQL",
20
21
  ]
21
22
 
@@ -40,6 +41,11 @@ DEPRECATED_METRICS = {
40
41
  "mean_wQuantileLoss": "WQL",
41
42
  }
42
43
 
44
+ # Experimental metrics that are not yet user facing
45
+ EXPERIMENTAL_METRICS = {
46
+ "WCD": WCD,
47
+ }
48
+
43
49
 
44
50
  def check_get_evaluation_metric(
45
51
  eval_metric: Union[str, TimeSeriesScorer, Type[TimeSeriesScorer], None] = None
@@ -51,12 +57,16 @@ def check_get_evaluation_metric(
51
57
  eval_metric = eval_metric()
52
58
  elif isinstance(eval_metric, str):
53
59
  eval_metric = DEPRECATED_METRICS.get(eval_metric, eval_metric)
54
- if eval_metric.upper() not in AVAILABLE_METRICS:
60
+ metric_name = eval_metric.upper()
61
+ if metric_name in AVAILABLE_METRICS:
62
+ eval_metric = AVAILABLE_METRICS[metric_name]()
63
+ elif metric_name in EXPERIMENTAL_METRICS:
64
+ eval_metric = EXPERIMENTAL_METRICS[metric_name]()
65
+ else:
55
66
  raise ValueError(
56
67
  f"Time series metric {eval_metric} not supported. Available metrics are:\n"
57
68
  f"{pformat(sorted(AVAILABLE_METRICS.keys()))}"
58
69
  )
59
- eval_metric = AVAILABLE_METRICS[eval_metric.upper()]()
60
70
  elif eval_metric is None:
61
71
  eval_metric = AVAILABLE_METRICS[DEFAULT_METRIC_NAME]()
62
72
  else:
@@ -1,4 +1,5 @@
1
1
  import logging
2
+ import warnings
2
3
  from typing import Optional
3
4
 
4
5
  import numpy as np
@@ -359,3 +360,52 @@ class RMSLE(TimeSeriesScorer):
359
360
  seasonal_period=seasonal_period,
360
361
  **kwargs,
361
362
  )
363
+
364
+
365
+ class WCD(TimeSeriesScorer):
366
+ r"""Weighted cumulative discrepancy.
367
+
368
+ Measures the discrepancy between the cumulative sum of the forecast and the cumulative sum of the actual values.
369
+
370
+ .. math::
371
+
372
+ \operatorname{WCD} = 2 \cdot \frac{1}{N} \frac{1}{H} \sum_{i=1}^{N} \sum_{t=T+1}^{T+H} \alpha \cdot \max(0, -d_{i, t}) + (1 - \alpha) \cdot \max(0, d_{i, t})
373
+
374
+ where :math:`d_{i, t}` is the difference between the cumulative predicted value and the cumulative actual value
375
+
376
+ .. math::
377
+
378
+ d_{i, t} = \left(\sum_{s=T+1}^t f_{i, s}) - \left(\sum_{s=T+1}^t y_{i, s})
379
+
380
+ Parameters
381
+ ----------
382
+ alpha : float, default = 0.5
383
+ Values > 0.5 correspond put a stronger penalty on underpredictions (when cumulative forecast is below the
384
+ cumulative actual value). Values < 0.5 put a stronger penalty on overpredictions.
385
+ """
386
+
387
+ def __init__(self, alpha: float = 0.5):
388
+ assert 0 < alpha < 1, "alpha must be in (0, 1)"
389
+ self.alpha = alpha
390
+ self.num_items: Optional[int] = None
391
+ warnings.warn(
392
+ f"{self.name} is an experimental metric. Its behavior may change in the future version of AutoGluon."
393
+ )
394
+
395
+ def save_past_metrics(self, data_past: TimeSeriesDataFrame, **kwargs) -> None:
396
+ self.num_items = data_past.num_items
397
+
398
+ def _fast_cumsum(self, y: np.ndarray) -> np.ndarray:
399
+ """Compute the cumulative sum for each consecutive `prediction_length` items in the array."""
400
+ y = y.reshape(self.num_items, -1)
401
+ return np.nancumsum(y, axis=1).ravel()
402
+
403
+ def compute_metric(
404
+ self, data_future: TimeSeriesDataFrame, predictions: TimeSeriesDataFrame, target: str = "target", **kwargs
405
+ ) -> float:
406
+ y_true, y_pred = self._get_point_forecast_score_inputs(data_future, predictions, target=target)
407
+ cumsum_true = self._fast_cumsum(y_true.to_numpy())
408
+ cumsum_pred = self._fast_cumsum(y_pred.to_numpy())
409
+ diffs = cumsum_pred - cumsum_true
410
+ error = diffs * np.where(diffs < 0, -self.alpha, (1 - self.alpha))
411
+ return 2 * self._safemean(error)
@@ -1,3 +1,3 @@
1
1
  """This is the autogluon version file."""
2
- __version__ = '1.1.2b20241112'
2
+ __version__ = '1.1.2b20241113'
3
3
  __lite__ = False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: autogluon.timeseries
3
- Version: 1.1.2b20241112
3
+ Version: 1.1.2b20241113
4
4
  Summary: Fast and Accurate ML in 3 Lines of Code
5
5
  Home-page: https://github.com/autogluon/autogluon
6
6
  Author: AutoGluon Community
@@ -17,9 +17,9 @@ fugue>=0.9.0
17
17
  tqdm<5,>=4.38
18
18
  orjson~=3.9
19
19
  tensorboard<3,>=2.9
20
- autogluon.core[raytune]==1.1.2b20241112
21
- autogluon.common==1.1.2b20241112
22
- autogluon.tabular[catboost,lightgbm,xgboost]==1.1.2b20241112
20
+ autogluon.core[raytune]==1.1.2b20241113
21
+ autogluon.common==1.1.2b20241113
22
+ autogluon.tabular[catboost,lightgbm,xgboost]==1.1.2b20241113
23
23
 
24
24
  [all]
25
25
  optimum[onnxruntime]<1.20,>=1.17