autogluon.timeseries 0.8.3b20230823__tar.gz → 0.8.3b20230824__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.
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/PKG-INFO +1 -1
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/setup.py +1 -3
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/autogluon_tabular/mlforecast.py +1 -1
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/local/abstract_local_model.py +1 -2
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/local/statsmodels.py +0 -2
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/multi_window/multi_window_model.py +0 -1
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/presets.py +3 -3
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/splitter.py +2 -2
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/trainer/abstract_trainer.py +4 -5
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/version.py +1 -1
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon.timeseries.egg-info/PKG-INFO +1 -1
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon.timeseries.egg-info/requires.txt +4 -4
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/setup.cfg +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/__init__.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/configs/__init__.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/configs/presets_configs.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/dataset/__init__.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/dataset/ts_dataframe.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/evaluator.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/learner.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/__init__.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/abstract/__init__.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/abstract/abstract_timeseries_model.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/abstract/model_trial.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/autogluon_tabular/__init__.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/autogluon_tabular/direct_tabular.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/autogluon_tabular/utils.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/ensemble/__init__.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/ensemble/abstract_timeseries_ensemble.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/ensemble/greedy_ensemble.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/gluonts/__init__.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/gluonts/abstract_gluonts.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/gluonts/torch/__init__.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/gluonts/torch/models.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/local/__init__.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/local/naive.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/local/npts.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/local/statsforecast.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/models/multi_window/__init__.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/predictor.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/trainer/__init__.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/trainer/auto_trainer.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/utils/__init__.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/utils/features.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/utils/forecast.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/utils/seasonality.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon/timeseries/utils/warning_filters.py +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon.timeseries.egg-info/SOURCES.txt +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon.timeseries.egg-info/dependency_links.txt +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon.timeseries.egg-info/namespace_packages.txt +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon.timeseries.egg-info/top_level.txt +0 -0
- {autogluon.timeseries-0.8.3b20230823 → autogluon.timeseries-0.8.3b20230824}/src/autogluon.timeseries.egg-info/zip-safe +0 -0
|
@@ -4,9 +4,7 @@ import importlib.util
|
|
|
4
4
|
###########################
|
|
5
5
|
# This code block is a HACK (!), but is necessary to avoid code duplication. Do NOT alter these lines.
|
|
6
6
|
import os
|
|
7
|
-
import warnings
|
|
8
7
|
|
|
9
|
-
from packaging.version import parse as vparse
|
|
10
8
|
from setuptools import setup
|
|
11
9
|
|
|
12
10
|
filepath = os.path.abspath(os.path.dirname(__file__))
|
|
@@ -45,7 +43,7 @@ install_requires = [
|
|
|
45
43
|
extras_require = {
|
|
46
44
|
"tests": [
|
|
47
45
|
"pytest",
|
|
48
|
-
"
|
|
46
|
+
"ruff>=0.0.285",
|
|
49
47
|
"flaky>=3.7,<4",
|
|
50
48
|
"pytest-timeout>=2.1,<3",
|
|
51
49
|
"isort>=5.10",
|
|
@@ -244,7 +244,7 @@ class RecursiveTabularModel(AbstractTimeSeriesModel):
|
|
|
244
244
|
if strategy == "items":
|
|
245
245
|
item_ids = data.item_ids
|
|
246
246
|
num_items_to_keep = math.ceil(len(item_ids) * max_num_rows / len(data))
|
|
247
|
-
items_to_keep = np.random.choice(item_ids, num_items_to_keep, replace=False)
|
|
247
|
+
items_to_keep = np.random.choice(item_ids, num_items_to_keep, replace=False) # noqa: F841
|
|
248
248
|
logger.debug(
|
|
249
249
|
f"\tRandomly selected {num_items_to_keep} ({num_items_to_keep / len(item_ids):.1%}) time series "
|
|
250
250
|
"to limit peak memory usage"
|
|
@@ -9,7 +9,6 @@ from joblib import Parallel, delayed
|
|
|
9
9
|
from scipy.stats import norm
|
|
10
10
|
|
|
11
11
|
from autogluon.core.utils.exceptions import TimeLimitExceeded
|
|
12
|
-
from autogluon.timeseries.dataset import TimeSeriesDataFrame
|
|
13
12
|
from autogluon.timeseries.dataset.ts_dataframe import ITEMID, TimeSeriesDataFrame
|
|
14
13
|
from autogluon.timeseries.models.abstract import AbstractTimeSeriesModel
|
|
15
14
|
from autogluon.timeseries.utils.forecast import get_forecast_horizon_index_ts_dataframe
|
|
@@ -168,7 +167,7 @@ class AbstractLocalModel(AbstractTimeSeriesModel):
|
|
|
168
167
|
local_model_args=self._local_model_args.copy(),
|
|
169
168
|
)
|
|
170
169
|
model_failed = False
|
|
171
|
-
except:
|
|
170
|
+
except Exception:
|
|
172
171
|
if self.use_fallback_model:
|
|
173
172
|
result = seasonal_naive_forecast(
|
|
174
173
|
target=time_series.values.ravel(),
|
|
@@ -16,8 +16,6 @@ warnings.simplefilter("ignore", ModelWarning)
|
|
|
16
16
|
warnings.simplefilter("ignore", ConvergenceWarning)
|
|
17
17
|
warnings.simplefilter("ignore", ValueWarning)
|
|
18
18
|
|
|
19
|
-
from .abstract_local_model import AbstractLocalModel
|
|
20
|
-
|
|
21
19
|
|
|
22
20
|
def get_quantiles_from_statsmodels(coverage_fn: Callable, quantile_levels: List[float]) -> List[pd.Series]:
|
|
23
21
|
"""Obtain quantile forecasts using a fitted Statsmodels model.
|
|
@@ -309,9 +309,9 @@ def verify_contains_at_least_one_searchspace(hyperparameters: Dict[str, List[Mod
|
|
|
309
309
|
return
|
|
310
310
|
|
|
311
311
|
raise ValueError(
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
312
|
+
"Hyperparameter tuning specified, but no model contains a hyperparameter search space. "
|
|
313
|
+
"Please disable hyperparameter tuning with `hyperparameter_tune_kwargs=None` or provide a search space "
|
|
314
|
+
"for at least one model."
|
|
315
315
|
)
|
|
316
316
|
|
|
317
317
|
|
|
@@ -3,7 +3,7 @@ from typing import Tuple, Union
|
|
|
3
3
|
|
|
4
4
|
import pandas as pd
|
|
5
5
|
|
|
6
|
-
from .dataset.ts_dataframe import
|
|
6
|
+
from .dataset.ts_dataframe import TimeSeriesDataFrame
|
|
7
7
|
|
|
8
8
|
logger = logging.getLogger(__name__)
|
|
9
9
|
|
|
@@ -169,7 +169,7 @@ class MultiWindowSplitter(AbstractTimeSeriesSplitter):
|
|
|
169
169
|
long_enough = num_timesteps_per_item > 2 * prediction_length
|
|
170
170
|
# Convert boolean indicator into item_id index
|
|
171
171
|
can_be_split = item_index[long_enough]
|
|
172
|
-
cannot_be_split = item_index[~long_enough]
|
|
172
|
+
cannot_be_split = item_index[~long_enough] # noqa: F841
|
|
173
173
|
|
|
174
174
|
train_dataframes.append(ts_dataframe.query("item_id in @cannot_be_split"))
|
|
175
175
|
if static_features_available:
|
|
@@ -12,7 +12,6 @@ import pandas as pd
|
|
|
12
12
|
from tqdm import tqdm
|
|
13
13
|
|
|
14
14
|
from autogluon.common.utils.log_utils import set_logger_verbosity
|
|
15
|
-
from autogluon.common.utils.path_converter import PathConverter
|
|
16
15
|
from autogluon.common.utils.utils import hash_pandas_df
|
|
17
16
|
from autogluon.core.models import AbstractModel
|
|
18
17
|
from autogluon.core.utils.exceptions import TimeLimitExceeded
|
|
@@ -382,7 +381,7 @@ class AbstractTimeSeriesTrainer(SimpleAbstractTrainer):
|
|
|
382
381
|
def get_model_names(self, level: Optional[int] = None, **kwargs) -> List[str]:
|
|
383
382
|
"""Get model names that are registered in the model graph"""
|
|
384
383
|
if level is not None:
|
|
385
|
-
return list(node for node, l in self._get_model_levels().items() if l == level)
|
|
384
|
+
return list(node for node, l in self._get_model_levels().items() if l == level) # noqa: E741
|
|
386
385
|
return list(self.model_graph.nodes)
|
|
387
386
|
|
|
388
387
|
def _train_single(
|
|
@@ -946,7 +945,7 @@ class AbstractTimeSeriesTrainer(SimpleAbstractTrainer):
|
|
|
946
945
|
model_pred_dict=model_pred_dict,
|
|
947
946
|
)
|
|
948
947
|
pred_time_dict_marginal[model_name] = time.time() - predict_start_time
|
|
949
|
-
except Exception
|
|
948
|
+
except Exception:
|
|
950
949
|
failed_models.append(model_name)
|
|
951
950
|
logger.error(f"Model {model_name} failed to predict with the following exception:")
|
|
952
951
|
logger.error(traceback.format_exc())
|
|
@@ -1000,7 +999,7 @@ class AbstractTimeSeriesTrainer(SimpleAbstractTrainer):
|
|
|
1000
999
|
return model_pred_dict, pred_time_dict
|
|
1001
1000
|
else:
|
|
1002
1001
|
logger.warning(f"Found corrupted cached predictions in {self._cached_predictions_path}")
|
|
1003
|
-
logger.debug(
|
|
1002
|
+
logger.debug("Found no cached predictions")
|
|
1004
1003
|
return {}, {}
|
|
1005
1004
|
|
|
1006
1005
|
def _save_cached_pred_dicts(
|
|
@@ -1008,7 +1007,7 @@ class AbstractTimeSeriesTrainer(SimpleAbstractTrainer):
|
|
|
1008
1007
|
) -> None:
|
|
1009
1008
|
# TODO: Save separate file for each dataset if _cached_predictions file grows large?
|
|
1010
1009
|
if self._cached_predictions_path.exists():
|
|
1011
|
-
logger.debug(
|
|
1010
|
+
logger.debug("Extending existing cached predictions")
|
|
1012
1011
|
cached_predictions = load_pkl.load(str(self._cached_predictions_path))
|
|
1013
1012
|
else:
|
|
1014
1013
|
cached_predictions = {}
|
|
@@ -11,15 +11,15 @@ statsforecast<1.5,>=1.4.0
|
|
|
11
11
|
mlforecast<0.7.4,>=0.7.0
|
|
12
12
|
tqdm<5,>=4.38
|
|
13
13
|
ujson<6,>=5
|
|
14
|
-
autogluon.core[raytune]==0.8.
|
|
15
|
-
autogluon.common==0.8.
|
|
16
|
-
autogluon.tabular[catboost,lightgbm,xgboost]==0.8.
|
|
14
|
+
autogluon.core[raytune]==0.8.3b20230824
|
|
15
|
+
autogluon.common==0.8.3b20230824
|
|
16
|
+
autogluon.tabular[catboost,lightgbm,xgboost]==0.8.3b20230824
|
|
17
17
|
|
|
18
18
|
[all]
|
|
19
19
|
|
|
20
20
|
[tests]
|
|
21
21
|
pytest
|
|
22
|
-
|
|
22
|
+
ruff>=0.0.285
|
|
23
23
|
flaky<4,>=3.7
|
|
24
24
|
pytest-timeout<3,>=2.1
|
|
25
25
|
isort>=5.10
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|