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.
- autogluon/timeseries/dataset/ts_dataframe.py +2 -2
- autogluon/timeseries/metrics/point.py +3 -1
- autogluon/timeseries/models/chronos/model.py +19 -15
- autogluon/timeseries/models/chronos/pipeline/base.py +1 -1
- autogluon/timeseries/models/chronos/pipeline/chronos.py +6 -5
- autogluon/timeseries/models/chronos/pipeline/utils.py +2 -2
- autogluon/timeseries/trainer/abstract_trainer.py +1 -1
- autogluon/timeseries/trainer/auto_trainer.py +1 -0
- autogluon/timeseries/utils/datetime/lags.py +3 -0
- autogluon/timeseries/utils/datetime/seasonality.py +2 -0
- autogluon/timeseries/utils/datetime/time_features.py +3 -1
- autogluon/timeseries/utils/features.py +18 -9
- autogluon/timeseries/utils/forecast.py +5 -2
- autogluon/timeseries/utils/warning_filters.py +1 -1
- autogluon/timeseries/version.py +1 -1
- {autogluon.timeseries-1.2b20241205.dist-info → autogluon.timeseries-1.2.1b20241207.dist-info}/METADATA +8 -7
- {autogluon.timeseries-1.2b20241205.dist-info → autogluon.timeseries-1.2.1b20241207.dist-info}/RECORD +24 -24
- /autogluon.timeseries-1.2b20241205-py3.8-nspkg.pth → /autogluon.timeseries-1.2.1b20241207-py3.8-nspkg.pth +0 -0
- {autogluon.timeseries-1.2b20241205.dist-info → autogluon.timeseries-1.2.1b20241207.dist-info}/LICENSE +0 -0
- {autogluon.timeseries-1.2b20241205.dist-info → autogluon.timeseries-1.2.1b20241207.dist-info}/NOTICE +0 -0
- {autogluon.timeseries-1.2b20241205.dist-info → autogluon.timeseries-1.2.1b20241207.dist-info}/WHEEL +0 -0
- {autogluon.timeseries-1.2b20241205.dist-info → autogluon.timeseries-1.2.1b20241207.dist-info}/namespace_packages.txt +0 -0
- {autogluon.timeseries-1.2b20241205.dist-info → autogluon.timeseries-1.2.1b20241207.dist-info}/top_level.txt +0 -0
- {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(
|
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.
|
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.
|
244
|
-
self.
|
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.
|
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.
|
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
|
-
|
400
|
-
token_ids, attention_mask, tokenizer_state = self.tokenizer.context_input_transform(
|
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
|
-
|
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(
|
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
|
-
|
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`
|
@@ -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.
|
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.
|
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
|
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
|
-
|
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])
|
autogluon/timeseries/version.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: autogluon.timeseries
|
3
|
-
Version: 1.
|
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.
|
57
|
-
Requires-Dist: autogluon.common==1.
|
58
|
-
Requires-Dist: autogluon.tabular[catboost,lightgbm,xgboost]==1.
|
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
|
[](https://github.com/autogluon/autogluon/releases)
|
79
79
|
[](https://anaconda.org/conda-forge/autogluon)
|
80
|
-
[](https://pypi.org/project/autogluon/)
|
81
81
|
[](https://pepy.tech/project/autogluon)
|
82
82
|
[](./LICENSE)
|
83
83
|
[](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.
|
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
|
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 |
|
{autogluon.timeseries-1.2b20241205.dist-info → autogluon.timeseries-1.2.1b20241207.dist-info}/RECORD
RENAMED
@@ -1,18 +1,18 @@
|
|
1
|
-
autogluon.timeseries-1.
|
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=
|
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=
|
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=
|
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=
|
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=
|
31
|
-
autogluon/timeseries/models/chronos/pipeline/chronos.py,sha256=
|
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=
|
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=
|
50
|
-
autogluon/timeseries/trainer/auto_trainer.py,sha256=
|
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=
|
56
|
-
autogluon/timeseries/utils/forecast.py,sha256=
|
57
|
-
autogluon/timeseries/utils/warning_filters.py,sha256=
|
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=
|
61
|
-
autogluon/timeseries/utils/datetime/seasonality.py,sha256=
|
62
|
-
autogluon/timeseries/utils/datetime/time_features.py,sha256=
|
63
|
-
autogluon.timeseries-1.
|
64
|
-
autogluon.timeseries-1.
|
65
|
-
autogluon.timeseries-1.
|
66
|
-
autogluon.timeseries-1.
|
67
|
-
autogluon.timeseries-1.
|
68
|
-
autogluon.timeseries-1.
|
69
|
-
autogluon.timeseries-1.
|
70
|
-
autogluon.timeseries-1.
|
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,,
|
File without changes
|
File without changes
|
{autogluon.timeseries-1.2b20241205.dist-info → autogluon.timeseries-1.2.1b20241207.dist-info}/NOTICE
RENAMED
File without changes
|
{autogluon.timeseries-1.2b20241205.dist-info → autogluon.timeseries-1.2.1b20241207.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|