autogluon.tabular 1.4.1b20250820__py3-none-any.whl → 1.4.1b20250822__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.
@@ -0,0 +1,130 @@
1
+ from __future__ import annotations
2
+
3
+ import math
4
+
5
+ from autogluon.core.constants import BINARY, PROBLEM_TYPES
6
+ from autogluon.core.utils.utils import default_holdout_frac
7
+
8
+ USE_BAG_HOLDOUT_AUTO_THRESHOLD = 1_000_000
9
+
10
+
11
+ def _get_validation_preset(num_train_rows: int, hpo_enabled: bool) -> dict[str, int | float]:
12
+ """Recommended validation preset manually defined by the AutoGluon developers."""
13
+
14
+ # -- Default recommendation
15
+ # max 8 due to 8 cores per CPU being very common.
16
+ # down to 5 folds for small datasets to have enough samples for a representative validation set.
17
+ num_bag_folds = min(8, max(5, math.floor(num_train_rows / 10)))
18
+
19
+ num_bag_sets = 1 # More repeats do not seem to help due to overfitting on val data.
20
+ use_bag_holdout = num_train_rows >= USE_BAG_HOLDOUT_AUTO_THRESHOLD
21
+ holdout_frac = round(default_holdout_frac(num_train_rows=num_train_rows, hyperparameter_tune=hpo_enabled), 4)
22
+
23
+ return dict(
24
+ num_bag_sets=num_bag_sets,
25
+ num_bag_folds=num_bag_folds,
26
+ use_bag_holdout=use_bag_holdout,
27
+ holdout_frac=holdout_frac,
28
+ )
29
+
30
+
31
+ # TODO(refactor): use a data class for the config of the validation method.
32
+ # TODO(improvement): Implement a more sophisticated solution.
33
+ # Could also use more metadata such as num_features, num_models,
34
+ # or time_limit for a heuristic.
35
+ # num_features: The number of features in the dataset.
36
+ # num_models: The number of models in the portfolio to fit.
37
+ # time_limit: The time limit for fitting models.
38
+ # Pointer for non-heuristic approach:
39
+ # -> meta-learning like Auto-Sklearn 2.0, needs a lot of metadata
40
+ def get_validation_and_stacking_method(
41
+ # Validation parameters
42
+ num_bag_folds: int | None,
43
+ num_bag_sets: int | None,
44
+ use_bag_holdout: bool | None,
45
+ holdout_frac: float | None,
46
+ # Stacking/Pipeline parameters
47
+ auto_stack: bool,
48
+ num_stack_levels: int | None,
49
+ dynamic_stacking: bool | None,
50
+ refit_full: bool | None,
51
+ # Metadata
52
+ num_train_rows: int,
53
+ problem_type: PROBLEM_TYPES,
54
+ hpo_enabled: bool,
55
+ ) -> tuple[int, int, int, bool, bool, float, bool]:
56
+ """Get the validation method for AutoGluon via a heuristic.
57
+
58
+ Input variables are `None` if they were not specified by the user or have an explicit default.
59
+
60
+ Parameters
61
+ ----------
62
+ num_bag_folds: int | None
63
+ The number of folds for cross-validation.
64
+ num_bag_sets: int | None
65
+ The number of repeats for cross-validation.
66
+ use_bag_holdout: bool | None
67
+ Whether to use (additional) holdout validation.
68
+ holdout_frac: float | None
69
+ The fraction of data to holdout for validation.
70
+ auto_stack: bool
71
+ Whether to automatically determine the stacking method.
72
+ num_stack_levels: int | None
73
+ The number of stacking levels.
74
+ dynamic_stacking: bool | None
75
+ Whether to use dynamic stacking.
76
+ refit_full: bool
77
+ Whether to refit the full training dataset.
78
+ num_train_rows: int
79
+ The number of rows in the training dataset.
80
+ problem_type: PROBLEM_TYPES
81
+ The type of problem to solve.
82
+ hpo_enabled: bool
83
+ If True, HPO is enabled during the run of AutoGluon.
84
+
85
+ Returns:
86
+ --------
87
+ Returns all variables needed to define the validation method.
88
+ """
89
+
90
+ cv_preset = _get_validation_preset(num_train_rows=num_train_rows, hpo_enabled=hpo_enabled)
91
+
92
+ # Independent of `auto_stack`
93
+ if use_bag_holdout is None:
94
+ use_bag_holdout = cv_preset["use_bag_holdout"]
95
+ if holdout_frac is None:
96
+ holdout_frac = cv_preset["holdout_frac"]
97
+ if dynamic_stacking is None:
98
+ dynamic_stacking = not use_bag_holdout
99
+ if refit_full is None:
100
+ refit_full = False
101
+
102
+ # Changed by `auto_stack`
103
+ if num_bag_folds is None:
104
+ # `num_bag_folds == 0` -> only use holdout validation
105
+ num_bag_folds = cv_preset["num_bag_folds"] if auto_stack else 0
106
+ if num_bag_sets is None:
107
+ # `num_bag_sets == 1` -> no repeats
108
+ num_bag_sets = cv_preset["num_bag_sets"] if auto_stack else 1
109
+ if num_stack_levels is None:
110
+ # Disable multi-layer stacking by default
111
+ num_stack_levels = 0
112
+
113
+ # Activate multi-layer stacking for `auto_stack` if
114
+ if auto_stack and (
115
+ dynamic_stacking # -> We use dynamic stacking
116
+ or
117
+ # -> We have holdout validation or a non-binary problem with more than 750 training rows
118
+ ((use_bag_holdout or (problem_type != BINARY)) and (num_train_rows >= 750))
119
+ ):
120
+ num_stack_levels = 1
121
+
122
+ return (
123
+ num_bag_folds,
124
+ num_bag_sets,
125
+ num_stack_levels,
126
+ dynamic_stacking,
127
+ use_bag_holdout,
128
+ holdout_frac,
129
+ refit_full,
130
+ )
@@ -6,7 +6,6 @@ tabular_presets_dict = dict(
6
6
  best_quality={
7
7
  "auto_stack": True,
8
8
  "dynamic_stacking": "auto",
9
- "num_bag_sets": 1,
10
9
  "hyperparameters": "zeroshot",
11
10
  "time_limit": 3600,
12
11
  },
@@ -16,7 +15,6 @@ tabular_presets_dict = dict(
16
15
  high_quality={
17
16
  "auto_stack": True,
18
17
  "dynamic_stacking": "auto",
19
- "num_bag_sets": 1,
20
18
  "hyperparameters": "zeroshot",
21
19
  "time_limit": 3600,
22
20
  "refit_full": True,
@@ -29,7 +27,6 @@ tabular_presets_dict = dict(
29
27
  good_quality={
30
28
  "auto_stack": True,
31
29
  "dynamic_stacking": "auto",
32
- "num_bag_sets": 1,
33
30
  "hyperparameters": "light",
34
31
  "time_limit": 3600,
35
32
  "refit_full": True,
@@ -278,18 +278,18 @@ class Padder(torch.nn.Module):
278
278
  self.cpu_mode = False
279
279
 
280
280
  # Original flash attention initialization logic
281
- x_o, self.indices_o, self.cu_seqlens_o, self.max_seqlen_in_batch_o = unpad_input(x, ~self.padding_mask)
281
+ x_o, self.indices_o, self.cu_seqlens_o, self.max_seqlen_in_batch_o, *_ = unpad_input(x, ~self.padding_mask)
282
282
 
283
283
  self.feature_mask_big = einops.repeat(self.feature_mask, 'b f -> b s f', s=n_obs)
284
- self.feature_mask_big, _, _, _ = unpad_input(self.feature_mask_big, ~self.padding_mask)
285
- x_of, self.indices_of, self.cu_seqlens_of, self.max_seqlen_in_batch_of = unpad_input(x_o, ~self.feature_mask_big)
284
+ self.feature_mask_big, _, _, _, *_ = unpad_input(self.feature_mask_big, ~self.padding_mask)
285
+ x_of, self.indices_of, self.cu_seqlens_of, self.max_seqlen_in_batch_of, *_ = unpad_input(x_o, ~self.feature_mask_big)
286
286
 
287
287
  x_rearranged = einx.rearrange('b s f d -> b f s d', x)
288
- x_f, self.indices_f, self.cu_seqlens_f, self.max_seqlen_in_batch_f = unpad_input(x_rearranged, ~self.feature_mask)
288
+ x_f, self.indices_f, self.cu_seqlens_f, self.max_seqlen_in_batch_f, *_ = unpad_input(x_rearranged, ~self.feature_mask)
289
289
 
290
290
  self.padding_mask_big = einops.repeat(self.padding_mask, 'b s -> b f s', f=n_feat)
291
- self.padding_mask_big, _, _, _ = unpad_input(self.padding_mask_big, ~self.feature_mask)
292
- x_fo, self.indices_fo, self.cu_seqlens_fo, self.max_seqlen_in_batch_fo = unpad_input(x_f, ~self.padding_mask_big)
291
+ self.padding_mask_big, _, _, _, *_ = unpad_input(self.padding_mask_big, ~self.feature_mask)
292
+ x_fo, self.indices_fo, self.cu_seqlens_fo, self.max_seqlen_in_batch_fo, *_ = unpad_input(x_f, ~self.padding_mask_big)
293
293
 
294
294
  self.batch_size_f = x_f.shape[0]
295
295
  self.batch_size_o = x_o.shape[0]
@@ -307,8 +307,8 @@ class Padder(torch.nn.Module):
307
307
 
308
308
  # GPU path with flash attention
309
309
  x = einx.rearrange('b s f d -> b f s d', x)
310
- x, _, _, _ = unpad_input(x, ~self.feature_mask)
311
- x, _, _, _ = unpad_input(x, ~self.padding_mask_big)
310
+ x, _, _, _, *_ = unpad_input(x, ~self.feature_mask)
311
+ x, _, _, _, *_ = unpad_input(x, ~self.padding_mask_big)
312
312
  return x
313
313
 
314
314
  def base_to_feat(self, x: torch.Tensor) -> torch.Tensor:
@@ -319,8 +319,8 @@ class Padder(torch.nn.Module):
319
319
  return x.view(b * f, s * d)
320
320
 
321
321
  # GPU path with flash attention
322
- x, _, _, _ = unpad_input(x, ~self.padding_mask)
323
- x, _, _, _ = unpad_input(x, ~self.feature_mask_big)
322
+ x, _, _, _, *_ = unpad_input(x, ~self.padding_mask)
323
+ x, _, _, _, *_ = unpad_input(x, ~self.feature_mask_big)
324
324
  return x
325
325
 
326
326
  def obs_to_base(self, x: torch.Tensor) -> torch.Tensor:
@@ -48,10 +48,14 @@ from autogluon.core.utils import get_pred_from_proba_df, plot_performance_vs_tri
48
48
  from autogluon.core.utils.decorators import apply_presets
49
49
  from autogluon.core.utils.loaders import load_pkl, load_str
50
50
  from autogluon.core.utils.savers import save_pkl, save_str
51
- from autogluon.core.utils.utils import CVSplitter, default_holdout_frac, generate_train_test_split_combined
51
+ from autogluon.core.utils.utils import CVSplitter, generate_train_test_split_combined
52
52
 
53
53
  from ..configs.feature_generator_presets import get_default_feature_generator
54
54
  from ..configs.hyperparameter_configs import get_hyperparameter_config
55
+ from ..configs.pipeline_presets import (
56
+ USE_BAG_HOLDOUT_AUTO_THRESHOLD,
57
+ get_validation_and_stacking_method,
58
+ )
55
59
  from ..configs.presets_configs import tabular_presets_alias, tabular_presets_dict
56
60
  from ..learner import AbstractTabularLearner, DefaultLearner
57
61
  from ..trainer.abstract_trainer import AbstractTabularTrainer
@@ -429,12 +433,17 @@ class TabularPredictor:
429
433
  Table of the training data as a pandas DataFrame.
430
434
  If str is passed, `train_data` will be loaded using the str value as the file path.
431
435
  tuning_data : :class:`pd.DataFrame` or str, optional
432
- Another dataset containing validation data reserved for tuning processes such as early stopping and hyperparameter tuning.
436
+ Another dataset containing validation data reserved for tuning processes such as early stopping, hyperparameter tuning, and ensembling.
433
437
  This dataset should be in the same format as `train_data`.
434
438
  If str is passed, `tuning_data` will be loaded using the str value as the file path.
435
- Note: final model returned may be fit on `tuning_data` as well as `train_data`. Do not provide your evaluation test data here!
436
- In particular, when `num_bag_folds` > 0 or `num_stack_levels` > 0, models will be trained on both `tuning_data` and `train_data`.
437
- If `tuning_data = None`, `fit()` will automatically hold out some random validation examples from `train_data`.
439
+ Note: If `refit_full=True` is specified, the final model may be fit on `tuning_data` as well as `train_data`.
440
+ Note: Because `tuning_data` is used to determine which model is the 'best' model, as well as to determine the ensemble weights,
441
+ it should not be considered a fully unseen dataset. It is possible that AutoGluon will be overfit to the `tuning_data`.
442
+ To ensure an unbiased evaluation, use separate unseen test data to evaluate the final model using `predictor.leaderboard(test_data, display=True)`.
443
+ Do not provide your evaluation test data as `tuning_data`!
444
+ If bagging is not enabled and `tuning_data = None`: `fit()` will automatically hold out some random validation samples from `train_data`.
445
+ If bagging is enabled and `tuning_data = None`: no tuning data will be used. Instead, AutoGluon will perform cross-validation.
446
+ If bagging is enabled: `use_bag_holdout=True` must be specified in order to provide tuning data. If specified, AutoGluon will still perform cross-validation for model fits, but will use `tuning_data` for optimizing the weighted ensemble weights and model calibration.
438
447
  time_limit : int, default = None
439
448
  Approximately how long `fit()` should run for (wallclock time in seconds).
440
449
  If not specified, `fit()` will run until all models have completed training, but will not repeatedly bag models unless `num_bag_sets` is specified.
@@ -1121,10 +1130,6 @@ class TabularPredictor:
1121
1130
  self._validate_calibrate_decision_threshold(calibrate_decision_threshold=calibrate_decision_threshold)
1122
1131
  self._validate_fit_strategy(fit_strategy=fit_strategy)
1123
1132
 
1124
- holdout_frac = kwargs["holdout_frac"]
1125
- num_bag_folds = kwargs["num_bag_folds"]
1126
- num_bag_sets = kwargs["num_bag_sets"]
1127
- num_stack_levels = kwargs["num_stack_levels"]
1128
1133
  auto_stack = kwargs["auto_stack"]
1129
1134
  feature_generator = kwargs["feature_generator"]
1130
1135
  unlabeled_data = kwargs["unlabeled_data"]
@@ -1220,16 +1225,46 @@ class TabularPredictor:
1220
1225
  else:
1221
1226
  ag_args_fit = learning_curves
1222
1227
 
1228
+ use_bag_holdout_was_auto = False
1229
+ dynamic_stacking_was_auto = False
1230
+ if isinstance(use_bag_holdout,str) and use_bag_holdout == "auto":
1231
+ use_bag_holdout = None
1232
+ use_bag_holdout_was_auto = True
1233
+ if isinstance(dynamic_stacking,str) and dynamic_stacking == "auto":
1234
+ dynamic_stacking = None
1235
+ dynamic_stacking_was_auto = True
1236
+
1237
+ (
1238
+ num_bag_folds,
1239
+ num_bag_sets,
1240
+ num_stack_levels,
1241
+ dynamic_stacking,
1242
+ use_bag_holdout,
1243
+ holdout_frac,
1244
+ refit_full,
1245
+ ) = get_validation_and_stacking_method(
1246
+ num_bag_folds=kwargs["num_bag_folds"],
1247
+ num_bag_sets=kwargs["num_bag_sets"],
1248
+ use_bag_holdout=use_bag_holdout,
1249
+ holdout_frac=kwargs["holdout_frac"],
1250
+ auto_stack=auto_stack,
1251
+ num_stack_levels=kwargs["num_stack_levels"],
1252
+ dynamic_stacking=dynamic_stacking,
1253
+ refit_full=kwargs["refit_full"],
1254
+ num_train_rows=len(train_data),
1255
+ problem_type=inferred_problem_type,
1256
+ hpo_enabled=ag_args.get("hyperparameter_tune_kwargs", None) is not None,
1257
+ )
1258
+
1223
1259
  num_bag_folds, num_bag_sets, num_stack_levels, dynamic_stacking, use_bag_holdout = self._sanitize_stack_args(
1224
1260
  num_bag_folds=num_bag_folds,
1225
1261
  num_bag_sets=num_bag_sets,
1226
1262
  num_stack_levels=num_stack_levels,
1227
- time_limit=time_limit,
1228
- auto_stack=auto_stack,
1229
1263
  num_train_rows=len(train_data),
1230
- problem_type=inferred_problem_type,
1231
1264
  dynamic_stacking=dynamic_stacking,
1232
1265
  use_bag_holdout=use_bag_holdout,
1266
+ use_bag_holdout_was_auto=use_bag_holdout_was_auto,
1267
+ dynamic_stacking_was_auto=dynamic_stacking_was_auto,
1233
1268
  )
1234
1269
  if auto_stack:
1235
1270
  logger.log(
@@ -1238,9 +1273,6 @@ class TabularPredictor:
1238
1273
  f"num_stack_levels={num_stack_levels}, num_bag_folds={num_bag_folds}, num_bag_sets={num_bag_sets}",
1239
1274
  )
1240
1275
 
1241
- if holdout_frac is None:
1242
- holdout_frac = default_holdout_frac(len(train_data), ag_args.get("hyperparameter_tune_kwargs", None) is not None)
1243
-
1244
1276
  if kwargs["save_bag_folds"] is not None and kwargs["_save_bag_folds"] is not None:
1245
1277
  raise ValueError(
1246
1278
  f"Cannot specify both `save_bag_folds` and `_save_bag_folds` at the same time. "
@@ -1328,7 +1360,7 @@ class TabularPredictor:
1328
1360
  )
1329
1361
  ag_post_fit_kwargs = dict(
1330
1362
  keep_only_best=kwargs["keep_only_best"],
1331
- refit_full=kwargs["refit_full"],
1363
+ refit_full=refit_full,
1332
1364
  set_best_to_refit_full=kwargs["set_best_to_refit_full"],
1333
1365
  save_space=kwargs["save_space"],
1334
1366
  calibrate=kwargs["calibrate"],
@@ -5489,41 +5521,12 @@ class TabularPredictor:
5489
5521
  num_bag_folds: int,
5490
5522
  num_bag_sets: int,
5491
5523
  num_stack_levels: int,
5492
- time_limit: float | None,
5493
- auto_stack: bool,
5494
5524
  num_train_rows: int,
5495
- problem_type: str,
5496
5525
  dynamic_stacking: bool | str,
5497
5526
  use_bag_holdout: bool | str,
5527
+ use_bag_holdout_was_auto: bool,
5528
+ dynamic_stacking_was_auto: bool,
5498
5529
  ):
5499
- use_bag_holdout_auto_threshold = 1000000
5500
- use_bag_holdout_was_auto = False
5501
- dynamic_stacking_was_auto = False
5502
- if isinstance(use_bag_holdout, str) and use_bag_holdout == "auto":
5503
- # Leverage use_bag_holdout when data is large to safeguard against stack leakage
5504
- use_bag_holdout = num_train_rows >= use_bag_holdout_auto_threshold
5505
- use_bag_holdout_was_auto = True
5506
- if isinstance(dynamic_stacking, str) and dynamic_stacking == "auto":
5507
- dynamic_stacking = not use_bag_holdout
5508
- dynamic_stacking_was_auto = True
5509
- if auto_stack:
5510
- # TODO: What about datasets that are 100k+? At a certain point should we not bag?
5511
- # TODO: What about time_limit? Metalearning can tell us expected runtime of each model, then we can select optimal folds + stack levels to fit time constraint
5512
- if num_bag_folds is None:
5513
- num_bag_folds = min(8, max(5, math.floor(num_train_rows / 10)))
5514
- if num_stack_levels is None:
5515
- if dynamic_stacking:
5516
- num_stack_levels = 1
5517
- else:
5518
- if use_bag_holdout or problem_type != BINARY:
5519
- num_stack_levels = min(1, max(0, math.floor(num_train_rows / 750)))
5520
- else:
5521
- # Disable multi-layer stacking to avoid stack info leakage
5522
- num_stack_levels = 0
5523
- if num_bag_folds is None:
5524
- num_bag_folds = 0
5525
- if num_stack_levels is None:
5526
- num_stack_levels = 0
5527
5530
  if not isinstance(num_bag_folds, int):
5528
5531
  raise ValueError(f"num_bag_folds must be an integer. (num_bag_folds={num_bag_folds})")
5529
5532
  if not isinstance(num_stack_levels, int):
@@ -5532,8 +5535,6 @@ class TabularPredictor:
5532
5535
  raise ValueError(f"num_bag_folds must be equal to 0 or >=2. (num_bag_folds={num_bag_folds})")
5533
5536
  if num_stack_levels != 0 and num_bag_folds == 0:
5534
5537
  raise ValueError(f"num_stack_levels must be 0 if num_bag_folds is 0. (num_stack_levels={num_stack_levels}, num_bag_folds={num_bag_folds})")
5535
- if num_bag_sets is None:
5536
- num_bag_sets = 1
5537
5538
  if not isinstance(num_bag_sets, int):
5538
5539
  raise ValueError(f"num_bag_sets must be an integer. (num_bag_sets={num_bag_sets})")
5539
5540
  if not isinstance(dynamic_stacking, bool):
@@ -5543,11 +5544,11 @@ class TabularPredictor:
5543
5544
 
5544
5545
  if use_bag_holdout_was_auto and num_bag_folds != 0:
5545
5546
  if use_bag_holdout:
5546
- log_extra = f"Reason: num_train_rows >= {use_bag_holdout_auto_threshold}. (num_train_rows={num_train_rows})"
5547
+ log_extra = f"Reason: num_train_rows >= {USE_BAG_HOLDOUT_AUTO_THRESHOLD}. (num_train_rows={num_train_rows})"
5547
5548
  else:
5548
- log_extra = f"Reason: num_train_rows < {use_bag_holdout_auto_threshold}. (num_train_rows={num_train_rows})"
5549
+ log_extra = f"Reason: num_train_rows < {USE_BAG_HOLDOUT_AUTO_THRESHOLD}. (num_train_rows={num_train_rows})"
5549
5550
  logger.log(20, f"Setting use_bag_holdout from 'auto' to {use_bag_holdout}. {log_extra}")
5550
- log_extra_ds = None
5551
+
5551
5552
  if dynamic_stacking and num_stack_levels < 1:
5552
5553
  log_extra_ds = f"Reason: Stacking is not enabled. (num_stack_levels={num_stack_levels})"
5553
5554
  if not dynamic_stacking_was_auto:
@@ -1,4 +1,4 @@
1
1
  """This is the autogluon version file."""
2
2
 
3
- __version__ = "1.4.1b20250820"
3
+ __version__ = "1.4.1b20250822"
4
4
  __lite__ = False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: autogluon.tabular
3
- Version: 1.4.1b20250820
3
+ Version: 1.4.1b20250822
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
@@ -41,23 +41,23 @@ Requires-Dist: scipy<1.17,>=1.5.4
41
41
  Requires-Dist: pandas<2.4.0,>=2.0.0
42
42
  Requires-Dist: scikit-learn<1.8.0,>=1.4.0
43
43
  Requires-Dist: networkx<4,>=3.0
44
- Requires-Dist: autogluon.core==1.4.1b20250820
45
- Requires-Dist: autogluon.features==1.4.1b20250820
44
+ Requires-Dist: autogluon.core==1.4.1b20250822
45
+ Requires-Dist: autogluon.features==1.4.1b20250822
46
46
  Provides-Extra: all
47
- Requires-Dist: xgboost<3.1,>=2.0; extra == "all"
48
- Requires-Dist: numpy<2.3.0,>=1.25; extra == "all"
47
+ Requires-Dist: torch<2.8,>=2.6; extra == "all"
48
+ Requires-Dist: loguru; extra == "all"
49
49
  Requires-Dist: einops<0.9,>=0.7; extra == "all"
50
- Requires-Dist: lightgbm<4.7,>=4.0; extra == "all"
50
+ Requires-Dist: autogluon.core[all]==1.4.1b20250822; extra == "all"
51
+ Requires-Dist: fastai<2.9,>=2.3.1; extra == "all"
51
52
  Requires-Dist: spacy<3.9; extra == "all"
52
- Requires-Dist: catboost<1.3,>=1.2; extra == "all"
53
- Requires-Dist: einx; extra == "all"
54
53
  Requires-Dist: huggingface-hub[torch]; extra == "all"
54
+ Requires-Dist: numpy<2.3.0,>=1.25; extra == "all"
55
55
  Requires-Dist: transformers; extra == "all"
56
+ Requires-Dist: einx; extra == "all"
56
57
  Requires-Dist: omegaconf; extra == "all"
57
- Requires-Dist: loguru; extra == "all"
58
- Requires-Dist: autogluon.core[all]==1.4.1b20250820; extra == "all"
59
- Requires-Dist: fastai<2.9,>=2.3.1; extra == "all"
60
- Requires-Dist: torch<2.8,>=2.6; extra == "all"
58
+ Requires-Dist: xgboost<3.1,>=2.0; extra == "all"
59
+ Requires-Dist: catboost<1.3,>=1.2; extra == "all"
60
+ Requires-Dist: lightgbm<4.7,>=4.0; extra == "all"
61
61
  Requires-Dist: blis<1.2.1,>=0.7.0; (platform_system == "Windows" and python_version == "3.9") and extra == "all"
62
62
  Provides-Extra: catboost
63
63
  Requires-Dist: numpy<2.3.0,>=1.25; extra == "catboost"
@@ -80,7 +80,7 @@ Requires-Dist: transformers; extra == "mitra"
80
80
  Requires-Dist: huggingface-hub[torch]; extra == "mitra"
81
81
  Requires-Dist: einops<0.9,>=0.7; extra == "mitra"
82
82
  Provides-Extra: ray
83
- Requires-Dist: autogluon.core[all]==1.4.1b20250820; extra == "ray"
83
+ Requires-Dist: autogluon.core[all]==1.4.1b20250822; extra == "ray"
84
84
  Provides-Extra: realmlp
85
85
  Requires-Dist: pytabkit<1.7,>=1.6; extra == "realmlp"
86
86
  Provides-Extra: skex
@@ -92,23 +92,23 @@ Requires-Dist: onnxruntime-gpu<1.20.0,>=1.17.0; extra == "skl2onnx"
92
92
  Requires-Dist: onnx<1.18.0,>=1.13.0; platform_system != "Windows" and extra == "skl2onnx"
93
93
  Requires-Dist: onnx<1.16.2,>=1.13.0; platform_system == "Windows" and extra == "skl2onnx"
94
94
  Provides-Extra: tabarena
95
- Requires-Dist: xgboost<3.1,>=2.0; extra == "tabarena"
95
+ Requires-Dist: torch<2.8,>=2.6; extra == "tabarena"
96
+ Requires-Dist: einops<0.9,>=0.7; extra == "tabarena"
97
+ Requires-Dist: loguru; extra == "tabarena"
98
+ Requires-Dist: autogluon.core[all]==1.4.1b20250822; extra == "tabarena"
99
+ Requires-Dist: fastai<2.9,>=2.3.1; extra == "tabarena"
100
+ Requires-Dist: spacy<3.9; extra == "tabarena"
101
+ Requires-Dist: huggingface-hub[torch]; extra == "tabarena"
96
102
  Requires-Dist: numpy<2.3.0,>=1.25; extra == "tabarena"
103
+ Requires-Dist: transformers; extra == "tabarena"
104
+ Requires-Dist: tabicl<0.2,>=0.1.3; extra == "tabarena"
97
105
  Requires-Dist: pytabkit<1.7,>=1.6; extra == "tabarena"
98
- Requires-Dist: lightgbm<4.7,>=4.0; extra == "tabarena"
99
- Requires-Dist: spacy<3.9; extra == "tabarena"
100
- Requires-Dist: catboost<1.3,>=1.2; extra == "tabarena"
101
106
  Requires-Dist: einx; extra == "tabarena"
102
- Requires-Dist: tabicl<0.2,>=0.1.3; extra == "tabarena"
103
- Requires-Dist: tabpfn<2.2,>=2.0.9; extra == "tabarena"
104
- Requires-Dist: transformers; extra == "tabarena"
105
- Requires-Dist: fastai<2.9,>=2.3.1; extra == "tabarena"
106
- Requires-Dist: torch<2.8,>=2.6; extra == "tabarena"
107
107
  Requires-Dist: omegaconf; extra == "tabarena"
108
- Requires-Dist: loguru; extra == "tabarena"
109
- Requires-Dist: autogluon.core[all]==1.4.1b20250820; extra == "tabarena"
110
- Requires-Dist: huggingface-hub[torch]; extra == "tabarena"
111
- Requires-Dist: einops<0.9,>=0.7; extra == "tabarena"
108
+ Requires-Dist: xgboost<3.1,>=2.0; extra == "tabarena"
109
+ Requires-Dist: catboost<1.3,>=1.2; extra == "tabarena"
110
+ Requires-Dist: tabpfn<2.2,>=2.0.9; extra == "tabarena"
111
+ Requires-Dist: lightgbm<4.7,>=4.0; extra == "tabarena"
112
112
  Requires-Dist: blis<1.2.1,>=0.7.0; (platform_system == "Windows" and python_version == "3.9") and extra == "tabarena"
113
113
  Provides-Extra: tabicl
114
114
  Requires-Dist: tabicl<0.2,>=0.1.3; extra == "tabicl"
@@ -1,11 +1,12 @@
1
- autogluon.tabular-1.4.1b20250820-py3.9-nspkg.pth,sha256=cQGwpuGPqg1GXscIwt-7PmME1OnSpD-7ixkikJ31WAY,554
1
+ autogluon.tabular-1.4.1b20250822-py3.9-nspkg.pth,sha256=cQGwpuGPqg1GXscIwt-7PmME1OnSpD-7ixkikJ31WAY,554
2
2
  autogluon/tabular/__init__.py,sha256=2OXpJCvENRHubBTYNIPpHX93WWuFZzsJBtTZbNVHVas,400
3
- autogluon/tabular/version.py,sha256=S2ZZQJcoKT498Nmq-Gu28zMiZsIYa6iD670boLDdwfg,91
3
+ autogluon/tabular/version.py,sha256=JW_AEpviUyHj43cz1licZ_J7NJ48OT2p3CoomHZZ1Ac,91
4
4
  autogluon/tabular/configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  autogluon/tabular/configs/config_helper.py,sha256=Rby5gRhuY5IlZWdKbtsmzbSt948B97qxwQ2f1MbH_38,21070
6
6
  autogluon/tabular/configs/feature_generator_presets.py,sha256=EV5Ym8VW15q92MwOUpTi7wZFS2QooM51fLg3RdUsn-M,1223
7
7
  autogluon/tabular/configs/hyperparameter_configs.py,sha256=aQ1rrF8P0MX4Ic5M33O96JtKV-K7YpDrgJmWhYmEyug,6848
8
- autogluon/tabular/configs/presets_configs.py,sha256=KxZkUU58dxvKeY8g94gdIJkqi2eos68262-efDJVrhY,7755
8
+ autogluon/tabular/configs/pipeline_presets.py,sha256=ccrT3C56pYHW8x8VB_Q9zAu_eCxlgNQpt7TXpVUzDfE,4761
9
+ autogluon/tabular/configs/presets_configs.py,sha256=_C9wTfKVRyoomtYa04RqNyw1CEOYc_5Q3QKejqDp754,7674
9
10
  autogluon/tabular/configs/zeroshot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
11
  autogluon/tabular/configs/zeroshot/zeroshot_portfolio_2023.py,sha256=6yd84vPqOk-6sLCoM_e_PlphrR2NZUjliS7L1SMKMug,29777
11
12
  autogluon/tabular/configs/zeroshot/zeroshot_portfolio_2025.py,sha256=NXwfqZLQLx4kdvRqF6deFDdhZZKxbfgpUurdB0kqOh8,11996
@@ -91,7 +92,7 @@ autogluon/tabular/models/mitra/_internal/data/preprocessor.py,sha256=zx2pWrpDaGS
91
92
  autogluon/tabular/models/mitra/_internal/models/__init__.py,sha256=K0vh5pyrntXp-o7gWNgQ0ZvDbxgeQuRgb6u8ecdjFhA,45
92
93
  autogluon/tabular/models/mitra/_internal/models/base.py,sha256=PKpMPT5OT9JFnmYPnhzFUeZPwdNM1e-k97_gW8GZq0Y,468
93
94
  autogluon/tabular/models/mitra/_internal/models/embedding.py,sha256=74O6cGWhUyHxg4-wiQwy4sPeDYQze2ekI9H5mLUtSLg,6223
94
- autogluon/tabular/models/mitra/_internal/models/tab2d.py,sha256=TorZsQR7LE5QRq2EAq1iT2asLuuAHpgy-PXXrTMxgSs,25743
95
+ autogluon/tabular/models/mitra/_internal/models/tab2d.py,sha256=o_S572-nKrhwxmEFaDSTvTLE7KztOvQmARRrc7CIeCY,25783
95
96
  autogluon/tabular/models/mitra/_internal/utils/__init__.py,sha256=0mhykAqjMmcEc8Y2od_DMPMk8f66LZHWM7qFdUrPddU,34
96
97
  autogluon/tabular/models/mitra/_internal/utils/set_seed.py,sha256=UnXzYfhmfT_tNAofKtLkKpwB9b6HVf9cpI4mKvoBuNM,340
97
98
  autogluon/tabular/models/realmlp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -173,7 +174,7 @@ autogluon/tabular/models/xt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
173
174
  autogluon/tabular/models/xt/xt_model.py,sha256=qOHJ5h1lHI7uYJfbl0BWm-29R3MNp2WeZB9ptcq5Xis,1003
174
175
  autogluon/tabular/predictor/__init__.py,sha256=zCMgjxQlWpDWnr1l1xjBCiK3rWC3N3RoD8UXBnazT74,107
175
176
  autogluon/tabular/predictor/interpretable_predictor.py,sha256=5UeKgnMFsfY65tiO3kxfHBPr03lyswLrgdtjPhI0Y7Q,6934
176
- autogluon/tabular/predictor/predictor.py,sha256=CRP98NWyRnWYHjvWpqSpfWo3CX5j170M6GXXe2lDw-g,360967
177
+ autogluon/tabular/predictor/predictor.py,sha256=sEnBSfM18OreAPH1fG9bNSsx62wCXKNv494Wowt7Atk,361051
177
178
  autogluon/tabular/registry/__init__.py,sha256=vZpzX4Xve7bfA9crt5LxjgQv9PPfxbi1E1U6Im0Y_xU,93
178
179
  autogluon/tabular/registry/_ag_model_registry.py,sha256=Aa-o_KZZiroPBpvZozIBXOlWYvQJN-MVsl_Gl66gkE8,1550
179
180
  autogluon/tabular/registry/_model_registry.py,sha256=Rl8Q7BLzaif4hxNxJF20xGE02vrWwh2ZuUaTmA-UJnE,6824
@@ -189,11 +190,11 @@ autogluon/tabular/trainer/model_presets/presets.py,sha256=hoWADaOG576Q_XLV1nY_ju
189
190
  autogluon/tabular/trainer/model_presets/presets_distill.py,sha256=MnFC2GJc6RmDBNAGbsO2XMfo3PjR8cUrZoilWW8gTYQ,3295
190
191
  autogluon/tabular/tuning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
192
  autogluon/tabular/tuning/feature_pruner.py,sha256=9iNku8gVbYEkjuKlyITPJDicsNkoraaQOlINQq9iZlQ,6877
192
- autogluon.tabular-1.4.1b20250820.dist-info/LICENSE,sha256=CeipvOyAZxBGUsFoaFqwkx54aPnIKEtm9a5u2uXxEws,10142
193
- autogluon.tabular-1.4.1b20250820.dist-info/METADATA,sha256=oxY-iF3arfj3QFp_5xjlbckx6lVKwN-yDcncp2EJUxo,16238
194
- autogluon.tabular-1.4.1b20250820.dist-info/NOTICE,sha256=7nPQuj8Kp-uXsU0S5so3-2dNU5EctS5hDXvvzzehd7E,114
195
- autogluon.tabular-1.4.1b20250820.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
196
- autogluon.tabular-1.4.1b20250820.dist-info/namespace_packages.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
197
- autogluon.tabular-1.4.1b20250820.dist-info/top_level.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
198
- autogluon.tabular-1.4.1b20250820.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
199
- autogluon.tabular-1.4.1b20250820.dist-info/RECORD,,
193
+ autogluon.tabular-1.4.1b20250822.dist-info/LICENSE,sha256=CeipvOyAZxBGUsFoaFqwkx54aPnIKEtm9a5u2uXxEws,10142
194
+ autogluon.tabular-1.4.1b20250822.dist-info/METADATA,sha256=3BEmNK7asqIBw0eL8lWrsdceKh90ryPdOfZ6UWTlchc,16238
195
+ autogluon.tabular-1.4.1b20250822.dist-info/NOTICE,sha256=7nPQuj8Kp-uXsU0S5so3-2dNU5EctS5hDXvvzzehd7E,114
196
+ autogluon.tabular-1.4.1b20250822.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
197
+ autogluon.tabular-1.4.1b20250822.dist-info/namespace_packages.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
198
+ autogluon.tabular-1.4.1b20250822.dist-info/top_level.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
199
+ autogluon.tabular-1.4.1b20250822.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
200
+ autogluon.tabular-1.4.1b20250822.dist-info/RECORD,,