autogluon.timeseries 1.2b20241205__py3-none-any.whl → 1.2.1b20241207__py3-none-any.whl

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 (24) hide show
  1. autogluon/timeseries/dataset/ts_dataframe.py +2 -2
  2. autogluon/timeseries/metrics/point.py +3 -1
  3. autogluon/timeseries/models/chronos/model.py +19 -15
  4. autogluon/timeseries/models/chronos/pipeline/base.py +1 -1
  5. autogluon/timeseries/models/chronos/pipeline/chronos.py +6 -5
  6. autogluon/timeseries/models/chronos/pipeline/utils.py +2 -2
  7. autogluon/timeseries/trainer/abstract_trainer.py +1 -1
  8. autogluon/timeseries/trainer/auto_trainer.py +1 -0
  9. autogluon/timeseries/utils/datetime/lags.py +3 -0
  10. autogluon/timeseries/utils/datetime/seasonality.py +2 -0
  11. autogluon/timeseries/utils/datetime/time_features.py +3 -1
  12. autogluon/timeseries/utils/features.py +18 -9
  13. autogluon/timeseries/utils/forecast.py +5 -2
  14. autogluon/timeseries/utils/warning_filters.py +1 -1
  15. autogluon/timeseries/version.py +1 -1
  16. {autogluon.timeseries-1.2b20241205.dist-info → autogluon.timeseries-1.2.1b20241207.dist-info}/METADATA +8 -7
  17. {autogluon.timeseries-1.2b20241205.dist-info → autogluon.timeseries-1.2.1b20241207.dist-info}/RECORD +24 -24
  18. /autogluon.timeseries-1.2b20241205-py3.8-nspkg.pth → /autogluon.timeseries-1.2.1b20241207-py3.8-nspkg.pth +0 -0
  19. {autogluon.timeseries-1.2b20241205.dist-info → autogluon.timeseries-1.2.1b20241207.dist-info}/LICENSE +0 -0
  20. {autogluon.timeseries-1.2b20241205.dist-info → autogluon.timeseries-1.2.1b20241207.dist-info}/NOTICE +0 -0
  21. {autogluon.timeseries-1.2b20241205.dist-info → autogluon.timeseries-1.2.1b20241207.dist-info}/WHEEL +0 -0
  22. {autogluon.timeseries-1.2b20241205.dist-info → autogluon.timeseries-1.2.1b20241207.dist-info}/namespace_packages.txt +0 -0
  23. {autogluon.timeseries-1.2b20241205.dist-info → autogluon.timeseries-1.2.1b20241207.dist-info}/top_level.txt +0 -0
  24. {autogluon.timeseries-1.2b20241205.dist-info → autogluon.timeseries-1.2.1b20241207.dist-info}/zip-safe +0 -0
@@ -561,7 +561,7 @@ class TimeSeriesDataFrame(pd.DataFrame, TimeSeriesDataFrameDeprecatedMixin):
561
561
  """Length of each time series in the dataframe."""
562
562
  return self.groupby(level=ITEMID, sort=False).size()
563
563
 
564
- def copy(self: TimeSeriesDataFrame, deep: bool = True) -> pd.DataFrame: # noqa
564
+ def copy(self: TimeSeriesDataFrame, deep: bool = True) -> pd.DataFrame: # type: ignore # noqa
565
565
  """Make a copy of the TimeSeriesDataFrame.
566
566
 
567
567
  When ``deep=True`` (default), a new object will be created with a copy of the calling object's data and
@@ -849,7 +849,7 @@ class TimeSeriesDataFrame(pd.DataFrame, TimeSeriesDataFrameDeprecatedMixin):
849
849
  )
850
850
  return TimeSeriesDataFrame(filled_df, static_features=self.static_features)
851
851
 
852
- def dropna(self, how: str = "any") -> TimeSeriesDataFrame:
852
+ def dropna(self, how: str = "any") -> TimeSeriesDataFrame: # type: ignore[override]
853
853
  """Drop rows containing NaNs.
854
854
 
855
855
  Parameters
@@ -392,7 +392,9 @@ class WCD(TimeSeriesScorer):
392
392
  f"{self.name} is an experimental metric. Its behavior may change in the future version of AutoGluon."
393
393
  )
394
394
 
395
- def save_past_metrics(self, data_past: TimeSeriesDataFrame, **kwargs) -> None:
395
+ def save_past_metrics(
396
+ self, data_past: TimeSeriesDataFrame, target: str = "target", seasonal_period: int = 1, **kwargs
397
+ ) -> None:
396
398
  self.num_items = data_past.num_items
397
399
 
398
400
  def _fast_cumsum(self, y: np.ndarray) -> np.ndarray:
@@ -184,8 +184,8 @@ class ChronosModel(AbstractTimeSeriesModel):
184
184
  prediction_length: int = 1,
185
185
  path: Optional[str] = None,
186
186
  name: Optional[str] = None,
187
- eval_metric: str = None,
188
- hyperparameters: Dict[str, Any] = None,
187
+ eval_metric: Optional[str] = None,
188
+ hyperparameters: Optional[Dict[str, Any]] = None,
189
189
  **kwargs, # noqa
190
190
  ):
191
191
  hyperparameters = hyperparameters if hyperparameters is not None else {}
@@ -237,13 +237,13 @@ class ChronosModel(AbstractTimeSeriesModel):
237
237
  **kwargs,
238
238
  )
239
239
 
240
- self.model_pipeline: Optional[Any] = None # of type BaseChronosPipeline
240
+ self._model_pipeline: Optional[Any] = None # of type BaseChronosPipeline
241
241
 
242
- def save(self, path: str = None, verbose: bool = True) -> str:
243
- pipeline = self.model_pipeline
244
- self.model_pipeline = None
242
+ def save(self, path: Optional[str] = None, verbose: bool = True) -> str:
243
+ pipeline = self._model_pipeline
244
+ self._model_pipeline = None
245
245
  path = super().save(path=path, verbose=verbose)
246
- self.model_pipeline = pipeline
246
+ self._model_pipeline = pipeline
247
247
 
248
248
  return str(path)
249
249
 
@@ -265,6 +265,13 @@ class ChronosModel(AbstractTimeSeriesModel):
265
265
 
266
266
  return torch.cuda.is_available()
267
267
 
268
+ @property
269
+ def model_pipeline(self) -> Any: # of type BaseChronosPipeline
270
+ """The model pipeline used for inference. If the model is not loaded, this will be None."""
271
+ if self._model_pipeline is None:
272
+ self.load_model_pipeline() # load model pipeline to device memory
273
+ return self._model_pipeline
274
+
268
275
  @property
269
276
  def ag_default_config(self) -> Dict[str, Any]:
270
277
  """The default configuration of the model used by AutoGluon if the model is one of those
@@ -295,7 +302,7 @@ class ChronosModel(AbstractTimeSeriesModel):
295
302
  return self.ag_default_config.get("default_torch_dtype", "auto")
296
303
 
297
304
  def get_minimum_resources(self, is_gpu_available: bool = False) -> Dict[str, Union[int, float]]:
298
- minimum_resources = {"num_cpus": 1}
305
+ minimum_resources: Dict[str, Union[int, float]] = {"num_cpus": 1}
299
306
  # if GPU is available, we train with 1 GPU per trial
300
307
  if is_gpu_available:
301
308
  minimum_resources["num_gpus"] = self.min_num_gpus
@@ -323,7 +330,7 @@ class ChronosModel(AbstractTimeSeriesModel):
323
330
  torch_dtype=self.torch_dtype,
324
331
  )
325
332
 
326
- self.model_pipeline = pipeline
333
+ self._model_pipeline = pipeline
327
334
 
328
335
  def persist(self) -> "ChronosModel":
329
336
  self.load_model_pipeline()
@@ -387,7 +394,7 @@ class ChronosModel(AbstractTimeSeriesModel):
387
394
  self,
388
395
  train_data: TimeSeriesDataFrame,
389
396
  val_data: Optional[TimeSeriesDataFrame] = None,
390
- time_limit: int = None,
397
+ time_limit: Optional[int] = None,
391
398
  **kwargs,
392
399
  ) -> None:
393
400
  from transformers.trainer import PrinterCallback, Trainer, TrainingArguments
@@ -452,6 +459,8 @@ class ChronosModel(AbstractTimeSeriesModel):
452
459
  f"\tChronosBolt models can only be fine-tuned with a maximum prediction_length of {model_prediction_length}. "
453
460
  f"Fine-tuning prediction_length has been changed to {fine_tune_prediction_length}."
454
461
  )
462
+ else:
463
+ raise ValueError(f"Unsupported model pipeline: {type(self.model_pipeline)}")
455
464
 
456
465
  fine_tune_trainer_kwargs = fine_tune_args["fine_tune_trainer_kwargs"]
457
466
  fine_tune_trainer_kwargs["use_cpu"] = str(self.model_pipeline.inner_model.device) == "cpu"
@@ -593,11 +602,6 @@ class ChronosModel(AbstractTimeSeriesModel):
593
602
  with warning_filter(all_warnings=True):
594
603
  import torch
595
604
 
596
- if self.model_pipeline is None:
597
- # FIXME: optimization_strategy is ignored when model is fine-tuned
598
- # load model pipeline to device memory
599
- self.load_model_pipeline()
600
-
601
605
  inference_data_loader = self._get_inference_data_loader(
602
606
  data=data,
603
607
  num_workers=self.data_loader_num_workers,
@@ -153,7 +153,7 @@ class BaseChronosPipeline(metaclass=PipelineRegistry):
153
153
  raise ValueError("Not a Chronos config file")
154
154
 
155
155
  pipeline_class_name = getattr(config, "chronos_pipeline_class", "ChronosPipeline")
156
- class_ = PipelineRegistry.REGISTRY.get(pipeline_class_name)
156
+ class_: Optional[BaseChronosPipeline] = PipelineRegistry.REGISTRY.get(pipeline_class_name) # type: ignore
157
157
  if class_ is None:
158
158
  raise ValueError(f"Trying to load unknown pipeline class: {pipeline_class_name}")
159
159
 
@@ -396,8 +396,8 @@ class ChronosPipeline(BaseChronosPipeline):
396
396
  or the length of the longest time series, if a list of 1D tensors was
397
397
  provided, and the extra 1 is for EOS.
398
398
  """
399
- context = self._prepare_and_validate_context(context=context)
400
- token_ids, attention_mask, tokenizer_state = self.tokenizer.context_input_transform(context)
399
+ context_tensor = self._prepare_and_validate_context(context=context)
400
+ token_ids, attention_mask, tokenizer_state = self.tokenizer.context_input_transform(context_tensor)
401
401
  embeddings = self.model.encode(
402
402
  input_ids=token_ids.to(self.model.device),
403
403
  attention_mask=attention_mask.to(self.model.device),
@@ -413,6 +413,7 @@ class ChronosPipeline(BaseChronosPipeline):
413
413
  top_k: Optional[int] = None,
414
414
  top_p: Optional[float] = None,
415
415
  limit_prediction_length: bool = False,
416
+ **kwargs,
416
417
  ) -> torch.Tensor:
417
418
  """
418
419
  Get forecasts for the given time series.
@@ -451,7 +452,7 @@ class ChronosPipeline(BaseChronosPipeline):
451
452
  Tensor of sample forecasts, of shape
452
453
  (batch_size, num_samples, prediction_length).
453
454
  """
454
- context = self._prepare_and_validate_context(context=context)
455
+ context_tensor = self._prepare_and_validate_context(context=context)
455
456
  if prediction_length is None:
456
457
  prediction_length = self.model.config.prediction_length
457
458
 
@@ -469,7 +470,7 @@ class ChronosPipeline(BaseChronosPipeline):
469
470
  remaining = prediction_length
470
471
 
471
472
  while remaining > 0:
472
- token_ids, attention_mask, scale = self.tokenizer.context_input_transform(context)
473
+ token_ids, attention_mask, scale = self.tokenizer.context_input_transform(context_tensor)
473
474
  samples = self.model(
474
475
  token_ids.to(self.model.device),
475
476
  attention_mask.to(self.model.device),
@@ -487,7 +488,7 @@ class ChronosPipeline(BaseChronosPipeline):
487
488
  if remaining <= 0:
488
489
  break
489
490
 
490
- context = torch.cat([context, prediction.median(dim=1).values], dim=-1)
491
+ context_tensor = torch.cat([context_tensor, prediction.median(dim=1).values], dim=-1)
491
492
 
492
493
  return torch.cat(predictions, dim=-1)
493
494
 
@@ -312,10 +312,10 @@ class TimeLimitCallback(TrainerCallback):
312
312
  self.start_time = None
313
313
 
314
314
  def on_train_begin(self, args, state, control, **kwargs):
315
- self.start_time = time.monotonic()
315
+ self.start_time = time.monotonic() # type: ignore
316
316
 
317
317
  def on_step_end(self, args, state, control, **kwargs):
318
- elapsed_time = time.monotonic() - self.start_time
318
+ elapsed_time = time.monotonic() - self.start_time # type: ignore
319
319
  if elapsed_time > self.time_limit:
320
320
  logger.log(15, "Stopping fine-tuning since time_limit is reached")
321
321
  control.should_training_stop = True
@@ -1400,7 +1400,7 @@ class AbstractTimeSeriesTrainer(SimpleAbstractTrainer):
1400
1400
  def fit(
1401
1401
  self,
1402
1402
  train_data: TimeSeriesDataFrame,
1403
- hyperparameters: Dict[str, Any],
1403
+ hyperparameters: Union[str, Dict[str, Any]],
1404
1404
  val_data: Optional[TimeSeriesDataFrame] = None,
1405
1405
  **kwargs,
1406
1406
  ) -> None:
@@ -40,6 +40,7 @@ class AutoTimeSeriesTrainer(AbstractTimeSeriesTrainer):
40
40
  excluded_model_types: Optional[List[str]] = None,
41
41
  time_limit: Optional[float] = None,
42
42
  random_seed: Optional[int] = None,
43
+ **kwargs,
43
44
  ):
44
45
  """
45
46
  Fit a set of timeseries models specified by the `hyperparameters`
@@ -95,6 +95,9 @@ def get_lags_for_frequency(
95
95
  """
96
96
 
97
97
  offset = pd.tseries.frequencies.to_offset(freq)
98
+
99
+ if offset is None:
100
+ raise ValueError(f"Invalid frequency: {freq}")
98
101
  offset_name = norm_freq_str(offset)
99
102
 
100
103
  if offset_name == "YE":
@@ -28,6 +28,8 @@ def get_seasonality(freq: Union[str, None]) -> int:
28
28
  return 1
29
29
 
30
30
  offset = pd.tseries.frequencies.to_offset(freq)
31
+
32
+ assert offset is not None # offset is only None if freq is None
31
33
  offset_name = norm_freq_str(offset)
32
34
  base_seasonality = DEFAULT_SEASONALITIES.get(offset_name, 1)
33
35
 
@@ -27,7 +27,7 @@ def week_of_year(index: pd.DatetimeIndex) -> np.ndarray:
27
27
  try:
28
28
  week = index.isocalendar().week
29
29
  except AttributeError:
30
- week = index.week
30
+ week = index.week # type: ignore[attr-defined]
31
31
 
32
32
  return _normalize(week - 1, num=53)
33
33
 
@@ -74,5 +74,7 @@ def get_time_features_for_frequency(freq) -> List[Callable]:
74
74
  "ns": [second_of_minute, minute_of_hour, hour_of_day, day_of_week, day_of_month, day_of_year],
75
75
  }
76
76
  offset = pd.tseries.frequencies.to_offset(freq)
77
+
78
+ assert offset is not None # offset is only None if freq is None
77
79
  offset_name = norm_freq_str(offset)
78
80
  return features_by_offset_name[offset_name]
@@ -140,13 +140,13 @@ class TimeSeriesFeatureGenerator:
140
140
  self.num_samples = num_samples
141
141
 
142
142
  self._is_fit = False
143
- self.known_covariates_names = list(known_covariates_names)
144
- self.past_covariates_names = []
143
+ self.known_covariates_names: List[str] = list(known_covariates_names)
144
+ self.past_covariates_names: List[str] = []
145
145
  self.known_covariates_pipeline = ContinuousAndCategoricalFeatureGenerator()
146
146
  self.past_covariates_pipeline = ContinuousAndCategoricalFeatureGenerator()
147
147
  # Cat features with cat_count=1 are fine in static_features since they are repeated for all time steps in a TS
148
148
  self.static_feature_pipeline = ContinuousAndCategoricalFeatureGenerator(minimum_cat_count=1)
149
- self.covariate_metadata: CovariateMetadata = None
149
+ self._covariate_metadata: Optional[CovariateMetadata] = None # type ignore
150
150
  self._train_covariates_real_median: Optional[pd.Series] = None
151
151
  self._train_static_real_median: Optional[pd.Series] = None
152
152
 
@@ -154,6 +154,11 @@ class TimeSeriesFeatureGenerator:
154
154
  def required_column_names(self) -> List[str]:
155
155
  return [self.target] + list(self.known_covariates_names) + list(self.past_covariates_names)
156
156
 
157
+ @property
158
+ def covariate_metadata(self) -> CovariateMetadata:
159
+ assert self._covariate_metadata is not None, "covariate_metadata is not set. Did you call fit?"
160
+ return self._covariate_metadata
161
+
157
162
  def fit(self, data: TimeSeriesDataFrame) -> None:
158
163
  self.fit_transform(data)
159
164
 
@@ -231,7 +236,7 @@ class TimeSeriesFeatureGenerator:
231
236
  "\nTo learn how to fix incorrectly inferred types, please see documentation for TimeSeriesPredictor.fit"
232
237
  )
233
238
 
234
- self.covariate_metadata = CovariateMetadata(
239
+ self._covariate_metadata = CovariateMetadata(
235
240
  known_covariates_cat=known_covariates_cat,
236
241
  known_covariates_real=known_covariates_real,
237
242
  past_covariates_cat=past_covariates_cat,
@@ -340,13 +345,13 @@ class TimeSeriesFeatureGenerator:
340
345
  @staticmethod
341
346
  def _detect_and_log_column_types(transformed_df: pd.DataFrame) -> Tuple[List[str], List[str]]:
342
347
  """Log & return names of categorical and real-valued columns in the DataFrame."""
343
- cat_column_names = []
344
- real_column_names = []
348
+ cat_column_names: List[str] = []
349
+ real_column_names: List[str] = []
345
350
  for column_name, column_dtype in transformed_df.dtypes.items():
346
351
  if isinstance(column_dtype, pd.CategoricalDtype):
347
- cat_column_names.append(column_name)
352
+ cat_column_names.append(str(column_name))
348
353
  elif pd.api.types.is_numeric_dtype(column_dtype):
349
- real_column_names.append(column_name)
354
+ real_column_names.append(str(column_name))
350
355
 
351
356
  logger.info(f"\t\tcategorical: {reprlib.repr(cat_column_names)}")
352
357
  logger.info(f"\t\tcontinuous (float): {reprlib.repr(real_column_names)}")
@@ -386,7 +391,11 @@ class AbstractFeatureImportanceTransform:
386
391
  self.covariate_metadata: CovariateMetadata = covariate_metadata
387
392
  self.prediction_length: int = prediction_length
388
393
 
389
- def _transform_series(self, data: pd.Series, is_categorical: bool, **kwargs) -> TimeSeriesDataFrame:
394
+ def _transform_static_series(self, feature_data: pd.Series, is_categorical: bool) -> Any:
395
+ """Transforms a series with the same index as the pandas DataFrame"""
396
+ raise NotImplementedError
397
+
398
+ def _transform_series(self, feature_data: pd.Series, is_categorical: bool) -> TimeSeriesDataFrame:
390
399
  """Transforms a series with the same index as the pandas DataFrame"""
391
400
  raise NotImplementedError
392
401
 
@@ -11,7 +11,10 @@ def get_forecast_horizon_index_single_time_series(
11
11
  past_timestamps: pd.DatetimeIndex, freq: str, prediction_length: int
12
12
  ) -> pd.DatetimeIndex:
13
13
  """Get timestamps for the next prediction_length many time steps of the time series with given frequency."""
14
- start_ts = past_timestamps.max() + 1 * pd.tseries.frequencies.to_offset(freq)
14
+ offset = pd.tseries.frequencies.to_offset(freq)
15
+ if offset is None:
16
+ raise ValueError(f"Invalid frequency: {freq}")
17
+ start_ts = past_timestamps.max() + 1 * offset
15
18
  return pd.date_range(start=start_ts, periods=prediction_length, freq=freq, name=TIMESTAMP)
16
19
 
17
20
 
@@ -36,5 +39,5 @@ def get_forecast_horizon_index_ts_dataframe(
36
39
  # Non-vectorized offsets like BusinessDay may produce a PerformanceWarning - we filter them
37
40
  with warnings.catch_warnings():
38
41
  warnings.simplefilter("ignore", category=pd.errors.PerformanceWarning)
39
- timestamps = np.dstack([last_ts + step * offset for step in range(1, prediction_length + 1)]).ravel()
42
+ timestamps = np.dstack([last_ts + step * offset for step in range(1, prediction_length + 1)]).ravel() # type: ignore[operator]
40
43
  return pd.MultiIndex.from_arrays([item_ids, timestamps], names=[ITEMID, TIMESTAMP])
@@ -75,7 +75,7 @@ def disable_stdout():
75
75
 
76
76
  class DuplicateLogFilter:
77
77
  def __init__(self, max_count: int = 1):
78
- self.messages = Counter()
78
+ self.messages: Counter[str] = Counter()
79
79
  self.max_count = max_count
80
80
 
81
81
  def filter(self, record):
@@ -1,3 +1,3 @@
1
1
  """This is the autogluon version file."""
2
- __version__ = '1.2b20241205'
2
+ __version__ = '1.2.1b20241207'
3
3
  __lite__ = False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: autogluon.timeseries
3
- Version: 1.2b20241205
3
+ Version: 1.2.1b20241207
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
@@ -53,9 +53,9 @@ Requires-Dist: fugue>=0.9.0
53
53
  Requires-Dist: tqdm<5,>=4.38
54
54
  Requires-Dist: orjson~=3.9
55
55
  Requires-Dist: tensorboard<3,>=2.9
56
- Requires-Dist: autogluon.core[raytune]==1.2b20241205
57
- Requires-Dist: autogluon.common==1.2b20241205
58
- Requires-Dist: autogluon.tabular[catboost,lightgbm,xgboost]==1.2b20241205
56
+ Requires-Dist: autogluon.core[raytune]==1.2.1b20241207
57
+ Requires-Dist: autogluon.common==1.2.1b20241207
58
+ Requires-Dist: autogluon.tabular[catboost,lightgbm,xgboost]==1.2.1b20241207
59
59
  Provides-Extra: all
60
60
  Provides-Extra: chronos-onnx
61
61
  Requires-Dist: optimum[onnxruntime]<1.20,>=1.17; extra == "chronos-onnx"
@@ -77,7 +77,7 @@ Requires-Dist: pytest-timeout<3,>=2.1; extra == "tests"
77
77
 
78
78
  [![Latest Release](https://img.shields.io/github/v/release/autogluon/autogluon)](https://github.com/autogluon/autogluon/releases)
79
79
  [![Conda Forge](https://img.shields.io/conda/vn/conda-forge/autogluon.svg)](https://anaconda.org/conda-forge/autogluon)
80
- [![Python Versions](https://img.shields.io/badge/python-3.8%20%7C%203.9%20%7C%203.10%20%7C%203.11-blue)](https://pypi.org/project/autogluon/)
80
+ [![Python Versions](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12-blue)](https://pypi.org/project/autogluon/)
81
81
  [![Downloads](https://pepy.tech/badge/autogluon/month)](https://pepy.tech/project/autogluon)
82
82
  [![GitHub license](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](./LICENSE)
83
83
  [![Discord](https://img.shields.io/discord/1043248669505368144?logo=discord&style=flat)](https://discord.gg/wjUmjqAc2N)
@@ -92,7 +92,7 @@ AutoGluon automates machine learning tasks enabling you to easily achieve strong
92
92
 
93
93
  ## 💾 Installation
94
94
 
95
- AutoGluon is supported on Python 3.8 - 3.11 and is available on Linux, MacOS, and Windows.
95
+ AutoGluon is supported on Python 3.9 - 3.12 and is available on Linux, MacOS, and Windows.
96
96
 
97
97
  You can install AutoGluon with:
98
98
 
@@ -126,7 +126,8 @@ Below is a curated list of recent tutorials and talks on AutoGluon. A comprehens
126
126
 
127
127
  | Title | Format | Location | Date |
128
128
  |--------------------------------------------------------------------------------------------------------------------------|----------|----------------------------------------------------------------------------------|------------|
129
- | :tv: [AutoGluon 1.0: Shattering the AutoML Ceiling with Zero Lines of Code](https://www.youtube.com/watch?v=5tvp_Ihgnuk) | Tutorial | [AutoML Conf 2023](https://2023.automl.cc/) | 2023/09/12 |
129
+ | :tv: [AutoGluon: Towards No-Code Automated Machine Learning](https://www.youtube.com/watch?v=SwPq9qjaN2Q) | Tutorial | [AutoML 2024](https://2024.automl.cc/) | 2024/09/09 |
130
+ | :tv: [AutoGluon 1.0: Shattering the AutoML Ceiling with Zero Lines of Code](https://www.youtube.com/watch?v=5tvp_Ihgnuk) | Tutorial | [AutoML 2023](https://2023.automl.cc/) | 2023/09/12 |
130
131
  | :sound: [AutoGluon: The Story](https://automlpodcast.com/episode/autogluon-the-story) | Podcast | [The AutoML Podcast](https://automlpodcast.com/) | 2023/09/05 |
131
132
  | :tv: [AutoGluon: AutoML for Tabular, Multimodal, and Time Series Data](https://youtu.be/Lwu15m5mmbs?si=jSaFJDqkTU27C0fa) | Tutorial | PyData Berlin | 2023/06/20 |
132
133
  | :tv: [Solving Complex ML Problems in a few Lines of Code with AutoGluon](https://www.youtube.com/watch?v=J1UQUCPB88I) | Tutorial | PyData Seattle | 2023/06/20 |
@@ -1,18 +1,18 @@
1
- autogluon.timeseries-1.2b20241205-py3.8-nspkg.pth,sha256=cQGwpuGPqg1GXscIwt-7PmME1OnSpD-7ixkikJ31WAY,554
1
+ autogluon.timeseries-1.2.1b20241207-py3.8-nspkg.pth,sha256=cQGwpuGPqg1GXscIwt-7PmME1OnSpD-7ixkikJ31WAY,554
2
2
  autogluon/timeseries/__init__.py,sha256=_CrLLc1fkjen7UzWoO0Os8WZoHOgvZbHKy46I8v_4k4,304
3
3
  autogluon/timeseries/evaluator.py,sha256=l642tYfTHsl8WVIq_vV6qhgAFVFr9UuZD7gLra3A_Kc,250
4
4
  autogluon/timeseries/learner.py,sha256=mFnBC750C5PqgkkYNYni9oYQ5a6K8pXSsDLRDXuA7DI,14182
5
5
  autogluon/timeseries/predictor.py,sha256=W9RhTUS_WFMAR7BXiHIYblKHCvGlY8WRTfJJ2E0pBn0,85471
6
6
  autogluon/timeseries/regressor.py,sha256=tqQ2zWImxpuEyaAM0DeCjOZ-xcWUYZbCXsqd471xXxQ,8351
7
7
  autogluon/timeseries/splitter.py,sha256=eghGwAAN2_cxGk5aJBILgjGWtLzjxJcytMy49gg_q18,3061
8
- autogluon/timeseries/version.py,sha256=dVMGMb9MPH_0CtohbnblJk790Y6IRsZv_BN5spzHVes,88
8
+ autogluon/timeseries/version.py,sha256=7sMUBp9aSa4Sggp0I4tAnoXBPE3ljo3XV_NSY5mKG3k,90
9
9
  autogluon/timeseries/configs/__init__.py,sha256=BTtHIPCYeGjqgOcvqb8qPD4VNX-ICKOg6wnkew1cPOE,98
10
10
  autogluon/timeseries/configs/presets_configs.py,sha256=cLat8ecLlWrI-SC5KLBDCX2SbVXaucemy2pjxJAtSY0,2543
11
11
  autogluon/timeseries/dataset/__init__.py,sha256=UvnhAN5tjgxXTHoZMQDy64YMDj4Xxa68yY7NP4vAw0o,81
12
- autogluon/timeseries/dataset/ts_dataframe.py,sha256=9bJQeg3HkPeVnyxzwqAJiTJGYXths7vxUV_3-OsJ6pk,48640
12
+ autogluon/timeseries/dataset/ts_dataframe.py,sha256=4EwvGrsoodrFk8CehhdLkFxBXB88HfF5M06zePe-N-w,48681
13
13
  autogluon/timeseries/metrics/__init__.py,sha256=LLGmYaexsx7CregV-QaHc5exjZbsJfBSVOtxHRGC0ho,2139
14
14
  autogluon/timeseries/metrics/abstract.py,sha256=9xCFQ3NaR1C0hn01M7oBd72a_CiNV-w6QFcRjwUbKYI,8183
15
- autogluon/timeseries/metrics/point.py,sha256=b19Ed4dS_ROdkrOZIik_Q3-8deCN9IQSZXtCl8tuxto,15509
15
+ autogluon/timeseries/metrics/point.py,sha256=Pov50UfT3l38j9kiokzFYzb0rAI3X_aIkZsGYqNKTco,15573
16
16
  autogluon/timeseries/metrics/quantile.py,sha256=eemdLbo3y2wstnVkuA-f55YXywctUmSW1EhIW4BsoH4,3965
17
17
  autogluon/timeseries/metrics/utils.py,sha256=HuDe1BNe8yJU4f_DKM913nNrUueoRaw6zhxm1-S20s0,910
18
18
  autogluon/timeseries/models/__init__.py,sha256=MYD9JJ-wUDE5B6jW6E6LU2eXQ6vflfQBvqQJkdzJa3A,1189
@@ -25,12 +25,12 @@ autogluon/timeseries/models/autogluon_tabular/mlforecast.py,sha256=vfWXLdxYlbzjK
25
25
  autogluon/timeseries/models/autogluon_tabular/transforms.py,sha256=XVoy8KpvoeX38lHHAXq4Be9LCxKjxZ36SOFeSAICRFM,2524
26
26
  autogluon/timeseries/models/autogluon_tabular/utils.py,sha256=Fn3Vu_Q0PCtEUbtNgLp1xIblg7dOdpFlF3W5kLHgruI,63
27
27
  autogluon/timeseries/models/chronos/__init__.py,sha256=wT77HzTtmQxW3sw2k0mA5Ot6PSHivX-Uvn5fjM05EU4,60
28
- autogluon/timeseries/models/chronos/model.py,sha256=jYnUdSWMrxdIWhysy-fEVd5w0Z06dQsIYdkh8alwgR0,30343
28
+ autogluon/timeseries/models/chronos/model.py,sha256=BsAgOK-AzghU-IM3H_XvezFh6JG1_3T3Poql48DY7cE,30642
29
29
  autogluon/timeseries/models/chronos/pipeline/__init__.py,sha256=N-YZH9BGBoi99r5cznJe1zEEjwjIg7cOYIHZkKuJq44,247
30
- autogluon/timeseries/models/chronos/pipeline/base.py,sha256=HlWQTS5q7UMzwbA5Pmg_N01AxuGfTf2tP5xq2jgavqI,5549
31
- autogluon/timeseries/models/chronos/pipeline/chronos.py,sha256=QmC0ZSHaF85dwAAzbg2elUX10iEhob6gp0Wctfsfq1k,22531
30
+ autogluon/timeseries/models/chronos/pipeline/base.py,sha256=14OAKHmio6LmO4mVom2mPGB0CvIrOjMGJzb-MVSAq-s,5596
31
+ autogluon/timeseries/models/chronos/pipeline/chronos.py,sha256=5IxpdBBEodH3vULyLiBA_1Ost5NSQqNUqveorJkbCso,22591
32
32
  autogluon/timeseries/models/chronos/pipeline/chronos_bolt.py,sha256=2MJuik-YFgONZ3X2DciAph5So6ABys5ppQhBC81gLyk,20083
33
- autogluon/timeseries/models/chronos/pipeline/utils.py,sha256=dENQLSN6dumLrTGQ6sbJMq45irdDFOoCarAnWpTbLjk,13134
33
+ autogluon/timeseries/models/chronos/pipeline/utils.py,sha256=shoVsQR40a5qHyhLVD8PaIvIiI0Y7mVp4dIe0Guu7Ws,13166
34
34
  autogluon/timeseries/models/ensemble/__init__.py,sha256=kFr11Gmt7lQJu9Rr8HuIPphQN5l1TsoorfbJm_O3a_s,128
35
35
  autogluon/timeseries/models/ensemble/abstract_timeseries_ensemble.py,sha256=tifETwmiEGt-YtQ9eNK7ojJ3fBvtFMUJvisbfkIJ7gw,3393
36
36
  autogluon/timeseries/models/ensemble/greedy_ensemble.py,sha256=5HvZuW5osgsZg3V69k82nKEOy_YgeH1JTfQa7F3cU7s,7220
@@ -46,25 +46,25 @@ autogluon/timeseries/models/local/statsforecast.py,sha256=cFJ_A7LR2jTmFNGgMxt3xv
46
46
  autogluon/timeseries/models/multi_window/__init__.py,sha256=Bq7AT2Jxdd4WNqmjTdzeqgNiwn1NCyWp4tBIWaM-zfI,60
47
47
  autogluon/timeseries/models/multi_window/multi_window_model.py,sha256=2o_wKNCNP570c0UuNufPhEDYOWQ2mFYwmmHUZzPneRI,11792
48
48
  autogluon/timeseries/trainer/__init__.py,sha256=lxiOT-Gc6BEnr_yWQqra85kEngeM_wtH2SCaRbmC_qE,170
49
- autogluon/timeseries/trainer/abstract_trainer.py,sha256=3DEr4hATu2zNzkuzwO5UeqS25Ak4k5w4OFAtCmYqmAc,61053
50
- autogluon/timeseries/trainer/auto_trainer.py,sha256=psJFZBwWWPlLjNwAgvO4OUJXsRW1sTN2YS9a4pdoeoE,3344
49
+ autogluon/timeseries/trainer/abstract_trainer.py,sha256=wY53OfKdC5QWfj2KGWV3xWc_3pnwi6gHvGIi7ehWugQ,61065
50
+ autogluon/timeseries/trainer/auto_trainer.py,sha256=NEZ2l6zVsR1j1wYvD05cOZOjMb0kC3kBTbN9NlfUsPI,3362
51
51
  autogluon/timeseries/transforms/__init__.py,sha256=Stym_998LZQgKPuFN4_w1AcJFh4_AeaQLXgXLzv53kY,299
52
52
  autogluon/timeseries/transforms/covariate_scaler.py,sha256=iscshgfNTCn379Q73BJXyDUFFm1WRclzKdG2MIPTOEc,6587
53
53
  autogluon/timeseries/transforms/target_scaler.py,sha256=8gxXy0zavR0ck48UVvnI2UXE8TV6ScFGoZdAvBrIF84,5372
54
54
  autogluon/timeseries/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- autogluon/timeseries/utils/features.py,sha256=VvBQzaymSSzxI9khtcXbpir-qo1NWHe51O7F6ynyh_s,21943
56
- autogluon/timeseries/utils/forecast.py,sha256=p0WKM9Q0nLAwwmCgYZI1zi9mCOWXWJfllEt2lPRQl4M,1882
57
- autogluon/timeseries/utils/warning_filters.py,sha256=JRitJwTsowvIXhNMEWjYIhLGgmXz1Kkj0J6ON3EVyS4,2508
55
+ autogluon/timeseries/utils/features.py,sha256=FYgcv_i5fFfxGOW86GLLrLanmaIpA2OXoMwUwvPsdkI,22443
56
+ autogluon/timeseries/utils/forecast.py,sha256=fVlWRUg-A29OYQyST5aTzMk-AXYO3R_5HEx28loD-Qk,2006
57
+ autogluon/timeseries/utils/warning_filters.py,sha256=FyXvYW_ylULcZP4R9xNBxojKtvadW3uygXwHK_xHq5g,2522
58
58
  autogluon/timeseries/utils/datetime/__init__.py,sha256=bTMR8jLh1LW55vHjbOr1zvWRMF_PqbvxpS-cUcNIDWI,173
59
59
  autogluon/timeseries/utils/datetime/base.py,sha256=3NdsH3NDq4cVAOSoy3XpaNixyNlbjy4DJ_YYOGuu9x4,1341
60
- autogluon/timeseries/utils/datetime/lags.py,sha256=GoLtvcZ8oKb3QkoBJ9E59LSPLOP7Qjxrr2UmMSZgjyw,5909
61
- autogluon/timeseries/utils/datetime/seasonality.py,sha256=h_4w00iEytAz_N_EpCENQ8RCXy7KQITczrYjBgVqWkQ,764
62
- autogluon/timeseries/utils/datetime/time_features.py,sha256=PAXbYbQ0z_5GFbkxSNi41zLY_2-U3x0Ynm1m_WhdtGc,2572
63
- autogluon.timeseries-1.2b20241205.dist-info/LICENSE,sha256=CeipvOyAZxBGUsFoaFqwkx54aPnIKEtm9a5u2uXxEws,10142
64
- autogluon.timeseries-1.2b20241205.dist-info/METADATA,sha256=16z-h2dhWZFeXJ76yFFdLfhxL2LGueOoHdNw6SzwkSk,12325
65
- autogluon.timeseries-1.2b20241205.dist-info/NOTICE,sha256=7nPQuj8Kp-uXsU0S5so3-2dNU5EctS5hDXvvzzehd7E,114
66
- autogluon.timeseries-1.2b20241205.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
67
- autogluon.timeseries-1.2b20241205.dist-info/namespace_packages.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
68
- autogluon.timeseries-1.2b20241205.dist-info/top_level.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
69
- autogluon.timeseries-1.2b20241205.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
70
- autogluon.timeseries-1.2b20241205.dist-info/RECORD,,
60
+ autogluon/timeseries/utils/datetime/lags.py,sha256=gQDk5_zmsY5DUWDUpSaCKYkQ9nHKKY-LsywJQRAoYSk,5988
61
+ autogluon/timeseries/utils/datetime/seasonality.py,sha256=YK_2k8hvYIMW-sJPnjGWRtCnvIOthwA2hATB3nwVoD4,834
62
+ autogluon/timeseries/utils/datetime/time_features.py,sha256=MjLi3zQ00uWWJtXH9oGX2GJkTbvjdSiuabSa4kcVuxE,2672
63
+ autogluon.timeseries-1.2.1b20241207.dist-info/LICENSE,sha256=CeipvOyAZxBGUsFoaFqwkx54aPnIKEtm9a5u2uXxEws,10142
64
+ autogluon.timeseries-1.2.1b20241207.dist-info/METADATA,sha256=2swtG6OfpCfUwzC1bufiES5kHVkB-M3t-brEcyepZbQ,12566
65
+ autogluon.timeseries-1.2.1b20241207.dist-info/NOTICE,sha256=7nPQuj8Kp-uXsU0S5so3-2dNU5EctS5hDXvvzzehd7E,114
66
+ autogluon.timeseries-1.2.1b20241207.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
67
+ autogluon.timeseries-1.2.1b20241207.dist-info/namespace_packages.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
68
+ autogluon.timeseries-1.2.1b20241207.dist-info/top_level.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
69
+ autogluon.timeseries-1.2.1b20241207.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
70
+ autogluon.timeseries-1.2.1b20241207.dist-info/RECORD,,