autogluon.timeseries 1.1.0b20240412__tar.gz → 1.1.0b20240414__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.

Potentially problematic release.


This version of autogluon.timeseries might be problematic. Click here for more details.

Files changed (63) hide show
  1. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/PKG-INFO +1 -1
  2. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/setup.py +0 -1
  3. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/autogluon_tabular/mlforecast.py +1 -1
  4. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/gluonts/abstract_gluonts.py +26 -4
  5. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/gluonts/torch/models.py +0 -2
  6. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/predictor.py +11 -1
  7. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/utils/warning_filters.py +1 -3
  8. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/version.py +1 -1
  9. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon.timeseries.egg-info/PKG-INFO +1 -1
  10. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon.timeseries.egg-info/requires.txt +3 -4
  11. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/setup.cfg +0 -0
  12. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/__init__.py +0 -0
  13. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/configs/__init__.py +0 -0
  14. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/configs/presets_configs.py +0 -0
  15. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/dataset/__init__.py +0 -0
  16. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/dataset/ts_dataframe.py +0 -0
  17. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/evaluator.py +0 -0
  18. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/learner.py +0 -0
  19. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/metrics/__init__.py +0 -0
  20. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/metrics/abstract.py +0 -0
  21. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/metrics/point.py +0 -0
  22. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/metrics/quantile.py +0 -0
  23. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/metrics/utils.py +0 -0
  24. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/__init__.py +0 -0
  25. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/abstract/__init__.py +0 -0
  26. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/abstract/abstract_timeseries_model.py +0 -0
  27. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/abstract/model_trial.py +0 -0
  28. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/autogluon_tabular/__init__.py +0 -0
  29. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/autogluon_tabular/utils.py +0 -0
  30. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/chronos/__init__.py +0 -0
  31. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/chronos/model.py +0 -0
  32. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/chronos/pipeline.py +0 -0
  33. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/chronos/utils.py +0 -0
  34. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/ensemble/__init__.py +0 -0
  35. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/ensemble/abstract_timeseries_ensemble.py +0 -0
  36. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/ensemble/greedy_ensemble.py +0 -0
  37. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/gluonts/__init__.py +0 -0
  38. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/gluonts/torch/__init__.py +0 -0
  39. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/local/__init__.py +0 -0
  40. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/local/abstract_local_model.py +0 -0
  41. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/local/naive.py +0 -0
  42. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/local/npts.py +0 -0
  43. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/local/statsforecast.py +0 -0
  44. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/multi_window/__init__.py +0 -0
  45. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/multi_window/multi_window_model.py +0 -0
  46. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/models/presets.py +0 -0
  47. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/splitter.py +0 -0
  48. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/trainer/__init__.py +0 -0
  49. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/trainer/abstract_trainer.py +0 -0
  50. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/trainer/auto_trainer.py +0 -0
  51. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/utils/__init__.py +0 -0
  52. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/utils/datetime/__init__.py +0 -0
  53. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/utils/datetime/base.py +0 -0
  54. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/utils/datetime/lags.py +0 -0
  55. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/utils/datetime/seasonality.py +0 -0
  56. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/utils/datetime/time_features.py +0 -0
  57. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/utils/features.py +0 -0
  58. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon/timeseries/utils/forecast.py +0 -0
  59. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon.timeseries.egg-info/SOURCES.txt +0 -0
  60. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon.timeseries.egg-info/dependency_links.txt +0 -0
  61. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon.timeseries.egg-info/namespace_packages.txt +0 -0
  62. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/src/autogluon.timeseries.egg-info/top_level.txt +0 -0
  63. {autogluon.timeseries-1.1.0b20240412 → autogluon.timeseries-1.1.0b20240414}/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.0b20240412
3
+ Version: 1.1.0b20240414
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
@@ -30,7 +30,6 @@ install_requires = [
30
30
  "pytorch_lightning", # version range defined in `core/_setup_utils.py`
31
31
  "transformers[sentencepiece]", # version range defined in `core/_setup_utils.py`
32
32
  "accelerate", # version range defined in `core/_setup_utils.py`
33
- "statsmodels>=0.13.0,<0.15",
34
33
  "gluonts>=0.14.0,<0.14.4", # 0.14.4 caps pandas<2.2
35
34
  "networkx", # version range defined in `core/_setup_utils.py`
36
35
  # TODO: update statsforecast to v1.5.0 - resolve antlr4-python3-runtime dependency clash with multimodal
@@ -337,7 +337,7 @@ class AbstractMLForecastModel(AbstractTimeSeriesModel):
337
337
  Seasonal naive forecast for short series, if there are any in the dataset.
338
338
  """
339
339
  ts_lengths = data.num_timesteps_per_item()
340
- short_series = ts_lengths.index[ts_lengths <= self._sum_of_differences]
340
+ short_series = ts_lengths.index[ts_lengths <= self._sum_of_differences + 1]
341
341
  if len(short_series) > 0:
342
342
  logger.warning(
343
343
  f"Warning: {len(short_series)} time series ({len(short_series) / len(ts_lengths):.1%}) are shorter "
@@ -25,6 +25,7 @@ from autogluon.tabular.models.tabular_nn.utils.categorical_encoders import (
25
25
  )
26
26
  from autogluon.timeseries.dataset.ts_dataframe import ITEMID, TIMESTAMP, TimeSeriesDataFrame
27
27
  from autogluon.timeseries.models.abstract import AbstractTimeSeriesModel
28
+ from autogluon.timeseries.utils.datetime import norm_freq_str
28
29
  from autogluon.timeseries.utils.forecast import get_forecast_horizon_index_ts_dataframe
29
30
  from autogluon.timeseries.utils.warning_filters import disable_root_logger, warning_filter
30
31
 
@@ -38,11 +39,10 @@ gts_logger = logging.getLogger(gluonts.__name__)
38
39
  class SimpleGluonTSDataset(GluonTSDataset):
39
40
  """Wrapper for TimeSeriesDataFrame that is compatible with the GluonTS Dataset API."""
40
41
 
41
- _dummy_gluonts_freq = "D"
42
-
43
42
  def __init__(
44
43
  self,
45
44
  target_df: TimeSeriesDataFrame,
45
+ freq: str,
46
46
  target_column: str = "target",
47
47
  feat_static_cat: Optional[np.ndarray] = None,
48
48
  feat_static_real: Optional[np.ndarray] = None,
@@ -62,6 +62,7 @@ class SimpleGluonTSDataset(GluonTSDataset):
62
62
  self.feat_dynamic_real = self._astype(feat_dynamic_real, dtype=np.float32)
63
63
  self.past_feat_dynamic_cat = self._astype(past_feat_dynamic_cat, dtype=np.int64)
64
64
  self.past_feat_dynamic_real = self._astype(past_feat_dynamic_real, dtype=np.float32)
65
+ self.freq = self._get_freq_for_period(freq)
65
66
 
66
67
  # Necessary to compute indptr for known_covariates at prediction time
67
68
  self.includes_future = includes_future
@@ -83,6 +84,24 @@ class SimpleGluonTSDataset(GluonTSDataset):
83
84
  else:
84
85
  return array.astype(dtype)
85
86
 
87
+ @staticmethod
88
+ def _get_freq_for_period(freq: str) -> str:
89
+ """Convert freq to format compatible with pd.Period.
90
+
91
+ For example, ME freq must be converted to M when creating a pd.Period.
92
+ """
93
+ offset = pd.tseries.frequencies.to_offset(freq)
94
+ freq_name = norm_freq_str(offset)
95
+ if freq_name == "SME":
96
+ # Replace unsupported frequency "SME" with "2W"
97
+ return "2W"
98
+ elif freq_name == "bh":
99
+ # Replace unsupported frequency "bh" with dummy value "Y"
100
+ return "Y"
101
+ else:
102
+ freq_name_for_period = {"YE": "Y", "QE": "Q", "ME": "M"}.get(freq_name, freq_name)
103
+ return f"{offset.n}{freq_name_for_period}"
104
+
86
105
  def __len__(self):
87
106
  return len(self.indptr) - 1 # noqa
88
107
 
@@ -93,7 +112,7 @@ class SimpleGluonTSDataset(GluonTSDataset):
93
112
  # GluonTS expects item_id to be a string
94
113
  ts = {
95
114
  FieldName.ITEM_ID: str(self.item_ids[j]),
96
- FieldName.START: pd.Period(self.start_timestamps.iloc[j], freq=self._dummy_gluonts_freq),
115
+ FieldName.START: pd.Period(self.start_timestamps.iloc[j], freq=self.freq),
97
116
  FieldName.TARGET: self.target_array[start_idx:end_idx],
98
117
  }
99
118
  if self.feat_static_cat is not None:
@@ -141,6 +160,8 @@ class AbstractGluonTSModel(AbstractTimeSeriesModel):
141
160
  """
142
161
 
143
162
  gluonts_model_path = "gluon_ts"
163
+ # we pass dummy freq compatible with pandas 2.1 & 2.2 to GluonTS models
164
+ _dummy_gluonts_freq = "D"
144
165
  # default number of samples for prediction
145
166
  default_num_samples: int = 250
146
167
  supports_cat_covariates: bool = False
@@ -344,7 +365,7 @@ class AbstractGluonTSModel(AbstractTimeSeriesModel):
344
365
  init_args.setdefault("early_stopping_patience", 20)
345
366
  init_args.update(
346
367
  dict(
347
- freq=self.freq,
368
+ freq=self._dummy_gluonts_freq,
348
369
  prediction_length=self.prediction_length,
349
370
  quantiles=self.quantile_levels,
350
371
  callbacks=self.callbacks,
@@ -475,6 +496,7 @@ class AbstractGluonTSModel(AbstractTimeSeriesModel):
475
496
 
476
497
  return SimpleGluonTSDataset(
477
498
  target_df=time_series_df[[self.target]],
499
+ freq=self.freq,
478
500
  target_column=self.target,
479
501
  feat_static_cat=feat_static_cat,
480
502
  feat_static_real=feat_static_real,
@@ -423,6 +423,4 @@ class WaveNetModel(AbstractGluonTSModel):
423
423
  init_kwargs.setdefault("seasonality", get_seasonality(self.freq))
424
424
  init_kwargs.setdefault("time_features", get_time_features_for_frequency(self.freq))
425
425
  init_kwargs.setdefault("num_parallel_samples", self.default_num_samples)
426
- # WaveNet model fails if an unsupported frequency such as "SM" is provided. We provide a dummy freq instead
427
- init_kwargs["freq"] = "D"
428
426
  return init_kwargs
@@ -631,7 +631,11 @@ class TimeSeriesPredictor(TimeSeriesPredictorDeprecatedMixin):
631
631
  This argument has no effect if ``tuning_data`` is provided.
632
632
  refit_every_n_windows: int or None, default = 1
633
633
  When performing cross validation, each model will be retrained every ``refit_every_n_windows`` validation
634
- windows. If set to ``None``, model will only be fit once for the first validation window.
634
+ windows, where the number of validation windows is specified by `num_val_windows`. Note that in the
635
+ default setting where `num_val_windows=1`, this argument has no effect.
636
+
637
+ If set to ``None``, models will only be fit once for the first (oldest) validation window. By default,
638
+ `refit_every_n_windows=1`, i.e., all models will be refit for each validation window.
635
639
  refit_full : bool, default = False
636
640
  If True, after training is complete, AutoGluon will attempt to re-train all models using all of training
637
641
  data (including the data initially reserved for validation). This argument has no effect if ``tuning_data``
@@ -717,6 +721,12 @@ class TimeSeriesPredictor(TimeSeriesPredictorDeprecatedMixin):
717
721
  if num_val_windows == 0 and tuning_data is None:
718
722
  raise ValueError("Please set num_val_windows >= 1 or provide custom tuning_data")
719
723
 
724
+ if num_val_windows <= 1 and refit_every_n_windows > 1:
725
+ logger.warning(
726
+ f"\trefit_every_n_windows provided as {refit_every_n_windows} but num_val_windows is set to {num_val_windows}."
727
+ " Refit_every_n_windows will have no effect."
728
+ )
729
+
720
730
  if not skip_model_selection:
721
731
  train_data = self._filter_useless_train_data(
722
732
  train_data, num_val_windows=num_val_windows, val_step_size=val_step_size
@@ -7,14 +7,12 @@ import re
7
7
  import sys
8
8
  import warnings
9
9
 
10
- from statsmodels.tools.sm_exceptions import ConvergenceWarning, ValueWarning
11
-
12
10
  __all__ = ["warning_filter", "disable_root_logger", "disable_tqdm"]
13
11
 
14
12
 
15
13
  @contextlib.contextmanager
16
14
  def warning_filter(all_warnings: bool = False):
17
- categories = [RuntimeWarning, UserWarning, ConvergenceWarning, ValueWarning, FutureWarning]
15
+ categories = [RuntimeWarning, UserWarning, FutureWarning]
18
16
  if all_warnings:
19
17
  categories.append(Warning)
20
18
  with warnings.catch_warnings():
@@ -1,3 +1,3 @@
1
1
  """This is the autogluon version file."""
2
- __version__ = '1.1.0b20240412'
2
+ __version__ = '1.1.0b20240414'
3
3
  __lite__ = False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: autogluon.timeseries
3
- Version: 1.1.0b20240412
3
+ Version: 1.1.0b20240414
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
@@ -7,7 +7,6 @@ lightning<2.2,>=2.1
7
7
  pytorch_lightning<2.2,>=2.1
8
8
  transformers[sentencepiece]<4.39.0,>=4.38.0
9
9
  accelerate<0.22.0,>=0.21.0
10
- statsmodels<0.15,>=0.13.0
11
10
  gluonts<0.14.4,>=0.14.0
12
11
  networkx<4,>=3.0
13
12
  statsforecast<1.5,>=1.4.0
@@ -16,9 +15,9 @@ utilsforecast<0.0.11,>=0.0.10
16
15
  tqdm<5,>=4.38
17
16
  orjson~=3.9
18
17
  tensorboard<3,>=2.9
19
- autogluon.core[raytune]==1.1.0b20240412
20
- autogluon.common==1.1.0b20240412
21
- autogluon.tabular[catboost,lightgbm,xgboost]==1.1.0b20240412
18
+ autogluon.core[raytune]==1.1.0b20240414
19
+ autogluon.common==1.1.0b20240414
20
+ autogluon.tabular[catboost,lightgbm,xgboost]==1.1.0b20240414
22
21
 
23
22
  [all]
24
23
  optimum[onnxruntime]<1.19,>=1.17