autogluon.tabular 1.4.1b20250821__py3-none-any.whl → 1.4.1b20250823__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 (20) hide show
  1. autogluon/tabular/models/__init__.py +1 -0
  2. autogluon/tabular/models/ebm/__init__.py +0 -0
  3. autogluon/tabular/models/ebm/ebm_model.py +263 -0
  4. autogluon/tabular/models/ebm/hyperparameters/__init__.py +0 -0
  5. autogluon/tabular/models/ebm/hyperparameters/parameters.py +39 -0
  6. autogluon/tabular/models/ebm/hyperparameters/searchspaces.py +72 -0
  7. autogluon/tabular/models/mitra/mitra_model.py +16 -0
  8. autogluon/tabular/models/mitra/sklearn_interface.py +8 -21
  9. autogluon/tabular/predictor/predictor.py +1 -0
  10. autogluon/tabular/registry/_ag_model_registry.py +2 -0
  11. autogluon/tabular/version.py +1 -1
  12. {autogluon.tabular-1.4.1b20250821.dist-info → autogluon.tabular-1.4.1b20250823.dist-info}/METADATA +30 -26
  13. {autogluon.tabular-1.4.1b20250821.dist-info → autogluon.tabular-1.4.1b20250823.dist-info}/RECORD +20 -15
  14. /autogluon.tabular-1.4.1b20250821-py3.9-nspkg.pth → /autogluon.tabular-1.4.1b20250823-py3.9-nspkg.pth +0 -0
  15. {autogluon.tabular-1.4.1b20250821.dist-info → autogluon.tabular-1.4.1b20250823.dist-info}/LICENSE +0 -0
  16. {autogluon.tabular-1.4.1b20250821.dist-info → autogluon.tabular-1.4.1b20250823.dist-info}/NOTICE +0 -0
  17. {autogluon.tabular-1.4.1b20250821.dist-info → autogluon.tabular-1.4.1b20250823.dist-info}/WHEEL +0 -0
  18. {autogluon.tabular-1.4.1b20250821.dist-info → autogluon.tabular-1.4.1b20250823.dist-info}/namespace_packages.txt +0 -0
  19. {autogluon.tabular-1.4.1b20250821.dist-info → autogluon.tabular-1.4.1b20250823.dist-info}/top_level.txt +0 -0
  20. {autogluon.tabular-1.4.1b20250821.dist-info → autogluon.tabular-1.4.1b20250823.dist-info}/zip-safe +0 -0
@@ -3,6 +3,7 @@ from autogluon.core.models.abstract.abstract_model import AbstractModel
3
3
  from .automm.automm_model import MultiModalPredictorModel
4
4
  from .automm.ft_transformer import FTTransformerModel
5
5
  from .catboost.catboost_model import CatBoostModel
6
+ from .ebm.ebm_model import EBMModel
6
7
  from .fastainn.tabular_nn_fastai import NNFastAiTabularModel
7
8
  from .fasttext.fasttext_model import FastTextModel
8
9
  from .image_prediction.image_predictor import ImagePredictorModel
File without changes
@@ -0,0 +1,263 @@
1
+ from __future__ import annotations
2
+
3
+ import time
4
+ import warnings
5
+ from typing import TYPE_CHECKING
6
+
7
+ import numpy as np
8
+ import pandas as pd
9
+ from autogluon.core.constants import BINARY, MULTICLASS, REGRESSION
10
+ from autogluon.core.models import AbstractModel
11
+
12
+ from .hyperparameters.parameters import get_param_baseline
13
+ from .hyperparameters.searchspaces import get_default_searchspace
14
+
15
+ if TYPE_CHECKING:
16
+ from autogluon.core.metrics import Scorer
17
+
18
+
19
+ class EbmCallback:
20
+ """Time limit callback for EBM."""
21
+
22
+ def __init__(self, seconds: float):
23
+ self.seconds = seconds
24
+ self.end_time: float | None = None
25
+
26
+ def __call__(self, *args, **kwargs):
27
+ if self.end_time is None:
28
+ self.end_time = time.monotonic() + self.seconds
29
+ return False
30
+ return time.monotonic() > self.end_time
31
+
32
+
33
+ class EBMModel(AbstractModel):
34
+ """
35
+ The Explainable Boosting Machine (EBM) is a glass-box generalized additive model
36
+ with automatic interaction detection (https://interpret.ml/docs). EBMs are
37
+ designed to be highly interpretable while achieving accuracy comparable to
38
+ black-box models on a wide range of tabular datasets.
39
+
40
+ Requires the 'interpret' or 'interpret-core' package. Install via:
41
+
42
+ pip install interpret
43
+
44
+
45
+ Paper: InterpretML: A Unified Framework for Machine Learning Interpretability
46
+
47
+ Authors: H. Nori, S. Jenkins, P. Koch, and R. Caruana 2019
48
+
49
+ Codebase: https://github.com/interpretml/interpret
50
+
51
+ License: MIT
52
+
53
+ .. versionadded:: 1.5.0
54
+ """
55
+
56
+ ag_key = "EBM"
57
+ ag_name = "EBM"
58
+ ag_priority = 35
59
+
60
+ def _fit(
61
+ self,
62
+ X: pd.DataFrame,
63
+ y: pd.Series,
64
+ X_val: pd.DataFrame | None = None,
65
+ y_val: pd.Series | None = None,
66
+ time_limit: float | None = None,
67
+ sample_weight: np.ndarray | None = None,
68
+ sample_weight_val: np.ndarray | None = None,
69
+ num_cpus: int | str = "auto",
70
+ **kwargs,
71
+ ):
72
+ # Preprocess data.
73
+ X = self.preprocess(X)
74
+ if X_val is not None:
75
+ X_val = self.preprocess(X_val)
76
+
77
+ features = self._features
78
+ if features is None:
79
+ features = X.columns
80
+
81
+ params = construct_ebm_params(
82
+ self.problem_type,
83
+ self._get_model_params(),
84
+ features,
85
+ self.stopping_metric,
86
+ num_cpus,
87
+ time_limit,
88
+ )
89
+
90
+ # Init Class
91
+ model_cls = get_class_from_problem_type(self.problem_type)
92
+ self.model = model_cls(random_state=self.random_seed, **params)
93
+
94
+ # Handle validation data format for EBM
95
+ fit_X = X
96
+ fit_y = y
97
+ fit_sample_weight = sample_weight
98
+ bags = None
99
+ if X_val is not None:
100
+ fit_X = pd.concat([X, X_val], ignore_index=True)
101
+ fit_y = pd.concat([y, y_val], ignore_index=True)
102
+ if sample_weight is not None:
103
+ fit_sample_weight = np.hstack([sample_weight, sample_weight_val])
104
+ bags = np.full((len(fit_X), 1), 1, np.int8)
105
+ bags[len(X) :, 0] = -1
106
+
107
+ with warnings.catch_warnings(): # try to filter joblib warnings
108
+ warnings.filterwarnings(
109
+ "ignore",
110
+ category=UserWarning,
111
+ message=".*resource_tracker: process died.*",
112
+ )
113
+ self.model.fit(fit_X, fit_y, sample_weight=fit_sample_weight, bags=bags)
114
+
115
+ def _get_random_seed_from_hyperparameters(
116
+ self, hyperparameters: dict
117
+ ) -> int | None | str:
118
+ return hyperparameters.get("random_state", "N/A")
119
+
120
+ def _set_default_params(self):
121
+ default_params = get_param_baseline(problem_type=self.problem_type, num_classes=self.num_classes)
122
+ for param, val in default_params.items():
123
+ self._set_default_param_value(param, val)
124
+
125
+ def _get_default_searchspace(self):
126
+ return get_default_searchspace(problem_type=self.problem_type, num_classes=self.num_classes)
127
+
128
+ def _get_default_auxiliary_params(self) -> dict:
129
+ default_auxiliary_params = super()._get_default_auxiliary_params()
130
+ extra_auxiliary_params = {
131
+ "valid_raw_types": ["int", "float", "category"],
132
+ }
133
+ default_auxiliary_params.update(extra_auxiliary_params)
134
+ return default_auxiliary_params
135
+
136
+ @classmethod
137
+ def supported_problem_types(cls) -> list[str] | None:
138
+ return ["binary", "multiclass", "regression"]
139
+
140
+ @classmethod
141
+ def _class_tags(cls) -> dict:
142
+ return {"can_estimate_memory_usage_static": True}
143
+
144
+ def _more_tags(self) -> dict:
145
+ """EBMs support refit full."""
146
+ return {"can_refit_full": True}
147
+
148
+ def _estimate_memory_usage(self, X: pd.DataFrame, y: pd.Series | None = None, **kwargs) -> int:
149
+ return self.estimate_memory_usage_static(
150
+ X=X,
151
+ y=y,
152
+ hyperparameters=self._get_model_params(),
153
+ problem_type=self.problem_type,
154
+ num_classes=self.num_classes,
155
+ features=self._features,
156
+ **kwargs,
157
+ )
158
+
159
+ @classmethod
160
+ def _estimate_memory_usage_static(
161
+ cls,
162
+ *,
163
+ X: pd.DataFrame,
164
+ y: pd.Series | None = None,
165
+ hyperparameters: dict | None = None,
166
+ problem_type: str = "infer",
167
+ num_classes: int = 1,
168
+ features=None,
169
+ **kwargs,
170
+ ) -> int:
171
+ """Returns the expected peak memory usage in bytes of the EBM model during fit."""
172
+ # TODO: we can improve the memory estimate slightly by using num_classes if y is None
173
+
174
+ if features is None:
175
+ features = X.columns
176
+
177
+ model_cls = get_class_from_problem_type(problem_type)
178
+ params = construct_ebm_params(problem_type, hyperparameters, features)
179
+ baseline_memory_bytes = 400_000_000 # 400 MB baseline memory
180
+
181
+ # assuming we call pd.concat([X, X_val], ignore_index=True), then X size will be doubled
182
+ return baseline_memory_bytes + model_cls(**params).estimate_mem(
183
+ X, y, data_multiplier=2.0
184
+ )
185
+
186
+ def _validate_fit_memory_usage(self, mem_error_threshold: float = 1, **kwargs):
187
+ # Given the good mem estimates with overhead, we set the threshold to 1.
188
+ return super()._validate_fit_memory_usage(
189
+ mem_error_threshold=mem_error_threshold, **kwargs
190
+ )
191
+
192
+
193
+ def construct_ebm_params(
194
+ problem_type,
195
+ hyperparameters=None,
196
+ features=None,
197
+ stopping_metric=None,
198
+ num_cpus=-1,
199
+ time_limit=None,
200
+ ):
201
+ if hyperparameters is None:
202
+ hyperparameters = {}
203
+
204
+ hyperparameters = hyperparameters.copy() # we pop values below, so copy.
205
+
206
+ # The user can specify nominal and continuous columns.
207
+ continuous_columns = hyperparameters.pop("continuous_columns", [])
208
+ nominal_columns = hyperparameters.pop("nominal_columns", [])
209
+
210
+ feature_types = None
211
+ if features is not None:
212
+ feature_types = []
213
+ for c in features:
214
+ if c in continuous_columns:
215
+ f_type = "continuous"
216
+ elif c in nominal_columns:
217
+ f_type = "nominal"
218
+ else:
219
+ f_type = "auto"
220
+ feature_types.append(f_type)
221
+
222
+ # Default parameters for EBM
223
+ params = {
224
+ "outer_bags": 1, # AutoGluon ensemble creates outer bags, no need for this overhead.
225
+ "n_jobs": 1, # EBM only parallelizes across outer bags currently, so ignore num_cpus
226
+ "feature_names": features,
227
+ "feature_types": feature_types,
228
+ }
229
+ if stopping_metric is not None:
230
+ params["objective"] = get_metric_from_ag_metric(
231
+ metric=stopping_metric, problem_type=problem_type
232
+ )
233
+ if time_limit is not None:
234
+ params["callback"] = EbmCallback(time_limit)
235
+
236
+ params.update(hyperparameters)
237
+ return params
238
+
239
+
240
+ def get_class_from_problem_type(problem_type: str):
241
+ if problem_type in [BINARY, MULTICLASS]:
242
+ from interpret.glassbox import ExplainableBoostingClassifier
243
+
244
+ model_cls = ExplainableBoostingClassifier
245
+ elif problem_type == REGRESSION:
246
+ from interpret.glassbox import ExplainableBoostingRegressor
247
+
248
+ model_cls = ExplainableBoostingRegressor
249
+ else:
250
+ raise ValueError(f"Unsupported problem type: {problem_type}")
251
+ return model_cls
252
+
253
+
254
+ def get_metric_from_ag_metric(*, metric: Scorer, problem_type: str):
255
+ """Map AutoGluon metric to EBM metric for early stopping."""
256
+ if problem_type in [BINARY, MULTICLASS]:
257
+ metric_class = "log_loss"
258
+ elif problem_type == REGRESSION:
259
+ metric_class = "rmse"
260
+ else:
261
+ raise AssertionError(f"EBM does not support {problem_type} problem type.")
262
+
263
+ return metric_class
@@ -0,0 +1,39 @@
1
+ from autogluon.core.constants import BINARY, MULTICLASS, REGRESSION, SOFTCLASS
2
+
3
+ def get_param_baseline(problem_type, num_classes=None):
4
+ if problem_type == BINARY:
5
+ return get_param_binary_baseline()
6
+ elif problem_type == MULTICLASS:
7
+ return get_param_multiclass_baseline(num_classes=num_classes)
8
+ elif problem_type == SOFTCLASS:
9
+ return get_param_multiclass_baseline(num_classes=num_classes)
10
+ elif problem_type == REGRESSION:
11
+ return get_param_regression_baseline()
12
+ else:
13
+ return get_param_binary_baseline()
14
+
15
+
16
+ def get_base_params():
17
+ base_params = {}
18
+ return base_params
19
+
20
+
21
+ def get_param_binary_baseline():
22
+ params = get_base_params()
23
+ baseline_params = {}
24
+ params.update(baseline_params)
25
+ return params
26
+
27
+
28
+ def get_param_multiclass_baseline(num_classes):
29
+ params = get_base_params()
30
+ baseline_params = {}
31
+ params.update(baseline_params)
32
+ return params
33
+
34
+
35
+ def get_param_regression_baseline():
36
+ params = get_base_params()
37
+ baseline_params = {}
38
+ params.update(baseline_params)
39
+ return params
@@ -0,0 +1,72 @@
1
+ """Default hyperparameter search spaces used in EBM model"""
2
+
3
+ from autogluon.common import space
4
+ from autogluon.core.constants import BINARY, MULTICLASS, REGRESSION
5
+
6
+ def get_default_searchspace(problem_type, num_classes=None):
7
+ if problem_type == BINARY:
8
+ return get_searchspace_binary_baseline()
9
+ elif problem_type == MULTICLASS:
10
+ return get_searchspace_multiclass_baseline(num_classes=num_classes)
11
+ elif problem_type == REGRESSION:
12
+ return get_searchspace_regression_baseline()
13
+ else:
14
+ return get_searchspace_binary_baseline()
15
+
16
+
17
+ def get_base_searchspace():
18
+ base_params = {
19
+ "max_leaves": space.Int(2, 3, default=2),
20
+ "smoothing_rounds": space.Int(0, 1000, default=200),
21
+ "learning_rate": space.Real(0.0025, 0.2, default=0.02, log=True),
22
+ "interactions": space.Categorical(
23
+ 0,
24
+ "0.5x",
25
+ "1x",
26
+ "1.5x",
27
+ "2x",
28
+ "2.5x",
29
+ "3x",
30
+ "3.5x",
31
+ "4x",
32
+ "4.5x",
33
+ "5x",
34
+ "6x",
35
+ "7x",
36
+ "8x",
37
+ "9x",
38
+ "10x",
39
+ "15x",
40
+ "20x",
41
+ "25x",
42
+ ),
43
+ "interaction_smoothing_rounds": space.Int(0, 200, default=90),
44
+ "min_hessian": space.Real(1e-10, 1e-2, default=1e-4, log=True),
45
+ "min_samples_leaf": space.Int(2, 20, default=4),
46
+ "gain_scale": space.Real(0.5, 5.0, default=5.0, log=True),
47
+ "min_cat_samples": space.Int(5, 20, default=10),
48
+ "cat_smooth": space.Real(5.0, 100.0, default=10.0, log=True),
49
+ "missing": space.Categorical("separate", "low", "high", "gain"),
50
+ }
51
+ return base_params
52
+
53
+
54
+ def get_searchspace_multiclass_baseline(num_classes):
55
+ params = get_base_searchspace()
56
+ baseline_params = {}
57
+ params.update(baseline_params)
58
+ return params
59
+
60
+
61
+ def get_searchspace_binary_baseline():
62
+ params = get_base_searchspace()
63
+ baseline_params = {}
64
+ params.update(baseline_params)
65
+ return params
66
+
67
+
68
+ def get_searchspace_regression_baseline():
69
+ params = get_base_searchspace()
70
+ baseline_params = {}
71
+ params.update(baseline_params)
72
+ return params
@@ -116,6 +116,22 @@ class MitraModel(AbstractModel):
116
116
 
117
117
  hyp = self._get_model_params()
118
118
 
119
+ hf_cls_model = hyp.pop("hf_cls_model", None)
120
+ hf_reg_model = hyp.pop("hf_reg_model", None)
121
+ if self.problem_type in ["binary", "multiclass"]:
122
+ hf_model = hf_cls_model
123
+ elif self.problem_type == "regression":
124
+ hf_model = hf_reg_model
125
+ else:
126
+ raise AssertionError(f"Unsupported problem_type: {self.problem_type}")
127
+ if hf_model is None:
128
+ hf_model = hyp.pop("hf_general_model", None)
129
+ if hf_model is None:
130
+ hf_model = hyp.pop("hf_model", None)
131
+ if hf_model is not None:
132
+ logger.log(30, f"\tCustom hf_model specified: {hf_model}")
133
+ hyp["hf_model"] = hf_model
134
+
119
135
  if hyp.get("device", None) is None:
120
136
  if num_gpus == 0:
121
137
  hyp["device"] = "cpu"
@@ -30,7 +30,6 @@ RANDOM_MIRROR_X = True # [True, False]
30
30
  LR = 0.0001 # [0.00001, 0.000025, 0.00005, 0.000075, 0.0001, 0.00025, 0.0005, 0.00075, 0.001]
31
31
  PATIENCE = 40 # [30, 35, 40, 45, 50]
32
32
  WARMUP_STEPS = 1000 # [500, 750, 1000, 1250, 1500]
33
- DEFAULT_GENERAL_MODEL = 'autogluon/mitra-classifier'
34
33
  DEFAULT_CLS_MODEL = 'autogluon/mitra-classifier'
35
34
  DEFAULT_REG_MODEL = 'autogluon/mitra-regressor'
36
35
 
@@ -67,9 +66,7 @@ class MitraBase(BaseEstimator):
67
66
  fine_tune_steps=DEFAULT_FINE_TUNE_STEPS,
68
67
  metric=DEFAULT_CLS_METRIC,
69
68
  state_dict=None,
70
- hf_general_model=DEFAULT_GENERAL_MODEL,
71
- hf_cls_model=DEFAULT_CLS_MODEL,
72
- hf_reg_model=DEFAULT_REG_MODEL,
69
+ hf_model=None,
73
70
  patience=PATIENCE,
74
71
  lr=LR,
75
72
  warmup_steps=WARMUP_STEPS,
@@ -104,9 +101,7 @@ class MitraBase(BaseEstimator):
104
101
  self.fine_tune_steps = fine_tune_steps
105
102
  self.metric = metric
106
103
  self.state_dict = state_dict
107
- self.hf_general_model = hf_general_model
108
- self.hf_cls_model = hf_cls_model
109
- self.hf_reg_model = hf_reg_model
104
+ self.hf_model = hf_model
110
105
  self.patience = patience
111
106
  self.lr = lr
112
107
  self.warmup_steps = warmup_steps
@@ -200,20 +195,8 @@ class MitraBase(BaseEstimator):
200
195
  self.train_time = 0
201
196
  for _ in range(self.n_estimators):
202
197
  if USE_HF:
203
- if task == 'classification':
204
- if self.hf_cls_model is not None:
205
- model = Tab2D.from_pretrained(self.hf_cls_model, device=self.device)
206
- elif self.hf_general_model is not None:
207
- model = Tab2D.from_pretrained(self.hf_general_model, device=self.device)
208
- else:
209
- model = Tab2D.from_pretrained("autogluon/mitra-classifier", device=self.device)
210
- elif task == 'regression':
211
- if self.hf_reg_model is not None:
212
- model = Tab2D.from_pretrained(self.hf_reg_model, device=self.device)
213
- elif self.hf_general_model is not None:
214
- model = Tab2D.from_pretrained(self.hf_general_model, device=self.device)
215
- else:
216
- model = Tab2D.from_pretrained("autogluon/mitra-regressor", device=self.device)
198
+ assert self.hf_model is not None, f"hf_model must not be None."
199
+ model = Tab2D.from_pretrained(self.hf_model, device=self.device)
217
200
  else:
218
201
  model = Tab2D(
219
202
  dim=cfg.hyperparams['dim'],
@@ -274,6 +257,7 @@ class MitraClassifier(MitraBase, ClassifierMixin):
274
257
  fine_tune_steps=DEFAULT_FINE_TUNE_STEPS,
275
258
  metric=DEFAULT_CLS_METRIC,
276
259
  state_dict=None,
260
+ hf_model=DEFAULT_CLS_MODEL,
277
261
  patience=PATIENCE,
278
262
  lr=LR,
279
263
  warmup_steps=WARMUP_STEPS,
@@ -294,6 +278,7 @@ class MitraClassifier(MitraBase, ClassifierMixin):
294
278
  fine_tune_steps,
295
279
  metric,
296
280
  state_dict,
281
+ hf_model=hf_model,
297
282
  patience=patience,
298
283
  lr=lr,
299
284
  warmup_steps=warmup_steps,
@@ -404,6 +389,7 @@ class MitraRegressor(MitraBase, RegressorMixin):
404
389
  fine_tune_steps=DEFAULT_FINE_TUNE_STEPS,
405
390
  metric=DEFAULT_REG_METRIC,
406
391
  state_dict=None,
392
+ hf_model=DEFAULT_REG_MODEL,
407
393
  patience=PATIENCE,
408
394
  lr=LR,
409
395
  warmup_steps=WARMUP_STEPS,
@@ -424,6 +410,7 @@ class MitraRegressor(MitraBase, RegressorMixin):
424
410
  fine_tune_steps,
425
411
  metric,
426
412
  state_dict,
413
+ hf_model=hf_model,
427
414
  patience=patience,
428
415
  lr=lr,
429
416
  warmup_steps=warmup_steps,
@@ -525,6 +525,7 @@ class TabularPredictor:
525
525
  'GBM' (LightGBM)
526
526
  'CAT' (CatBoost)
527
527
  'XGB' (XGBoost)
528
+ 'EBM' (Explainable Boosting Machine)
528
529
  'REALMLP' (RealMLP)
529
530
  'TABM' (TabM)
530
531
  'MITRA' (Mitra)
@@ -8,6 +8,7 @@ from . import ModelRegistry
8
8
  from ..models import (
9
9
  BoostedRulesModel,
10
10
  CatBoostModel,
11
+ EBMModel,
11
12
  FastTextModel,
12
13
  FigsModel,
13
14
  FTTransformerModel,
@@ -64,6 +65,7 @@ REGISTERED_MODEL_CLS_LST = [
64
65
  HSTreeModel,
65
66
  BoostedRulesModel,
66
67
  DummyModel,
68
+ EBMModel,
67
69
  ]
68
70
 
69
71
  # TODO: Replace logic in `autogluon.tabular.trainer.model_presets.presets` with `ag_model_registry`
@@ -1,4 +1,4 @@
1
1
  """This is the autogluon version file."""
2
2
 
3
- __version__ = "1.4.1b20250821"
3
+ __version__ = "1.4.1b20250823"
4
4
  __lite__ = False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: autogluon.tabular
3
- Version: 1.4.1b20250821
3
+ Version: 1.4.1b20250823
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.1b20250821
45
- Requires-Dist: autogluon.features==1.4.1b20250821
44
+ Requires-Dist: autogluon.core==1.4.1b20250823
45
+ Requires-Dist: autogluon.features==1.4.1b20250823
46
46
  Provides-Extra: all
47
- Requires-Dist: xgboost<3.1,>=2.0; extra == "all"
48
47
  Requires-Dist: catboost<1.3,>=1.2; extra == "all"
49
- Requires-Dist: numpy<2.3.0,>=1.25; extra == "all"
50
- Requires-Dist: transformers; extra == "all"
51
- Requires-Dist: omegaconf; extra == "all"
52
- Requires-Dist: loguru; extra == "all"
53
- Requires-Dist: spacy<3.9; extra == "all"
54
- Requires-Dist: autogluon.core[all]==1.4.1b20250821; extra == "all"
55
- Requires-Dist: torch<2.8,>=2.6; extra == "all"
56
- Requires-Dist: fastai<2.9,>=2.3.1; extra == "all"
57
- Requires-Dist: einx; extra == "all"
58
48
  Requires-Dist: huggingface-hub[torch]; extra == "all"
59
49
  Requires-Dist: einops<0.9,>=0.7; extra == "all"
60
50
  Requires-Dist: lightgbm<4.7,>=4.0; extra == "all"
51
+ Requires-Dist: torch<2.8,>=2.6; extra == "all"
52
+ Requires-Dist: xgboost<3.1,>=2.0; extra == "all"
53
+ Requires-Dist: einx; extra == "all"
54
+ Requires-Dist: numpy<2.3.0,>=1.25; extra == "all"
55
+ Requires-Dist: fastai<2.9,>=2.3.1; extra == "all"
56
+ Requires-Dist: loguru; extra == "all"
57
+ Requires-Dist: omegaconf; extra == "all"
58
+ Requires-Dist: transformers; extra == "all"
59
+ Requires-Dist: autogluon.core[all]==1.4.1b20250823; extra == "all"
60
+ Requires-Dist: spacy<3.9; 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"
@@ -69,6 +69,8 @@ Requires-Dist: fastai<2.9,>=2.3.1; extra == "fastai"
69
69
  Requires-Dist: blis<1.2.1,>=0.7.0; (platform_system == "Windows" and python_version == "3.9") and extra == "fastai"
70
70
  Provides-Extra: imodels
71
71
  Requires-Dist: imodels<2.1.0,>=1.3.10; extra == "imodels"
72
+ Provides-Extra: interpret
73
+ Requires-Dist: interpret-core<0.8,>=0.7.2; extra == "interpret"
72
74
  Provides-Extra: lightgbm
73
75
  Requires-Dist: lightgbm<4.7,>=4.0; extra == "lightgbm"
74
76
  Provides-Extra: mitra
@@ -80,7 +82,7 @@ Requires-Dist: transformers; extra == "mitra"
80
82
  Requires-Dist: huggingface-hub[torch]; extra == "mitra"
81
83
  Requires-Dist: einops<0.9,>=0.7; extra == "mitra"
82
84
  Provides-Extra: ray
83
- Requires-Dist: autogluon.core[all]==1.4.1b20250821; extra == "ray"
85
+ Requires-Dist: autogluon.core[all]==1.4.1b20250823; extra == "ray"
84
86
  Provides-Extra: realmlp
85
87
  Requires-Dist: pytabkit<1.7,>=1.6; extra == "realmlp"
86
88
  Provides-Extra: skex
@@ -92,23 +94,24 @@ Requires-Dist: onnxruntime-gpu<1.20.0,>=1.17.0; extra == "skl2onnx"
92
94
  Requires-Dist: onnx<1.18.0,>=1.13.0; platform_system != "Windows" and extra == "skl2onnx"
93
95
  Requires-Dist: onnx<1.16.2,>=1.13.0; platform_system == "Windows" and extra == "skl2onnx"
94
96
  Provides-Extra: tabarena
95
- Requires-Dist: xgboost<3.1,>=2.0; extra == "tabarena"
96
- Requires-Dist: catboost<1.3,>=1.2; extra == "tabarena"
97
- Requires-Dist: numpy<2.3.0,>=1.25; extra == "tabarena"
98
- Requires-Dist: transformers; extra == "tabarena"
99
- Requires-Dist: omegaconf; extra == "tabarena"
100
- Requires-Dist: loguru; extra == "tabarena"
101
- Requires-Dist: spacy<3.9; extra == "tabarena"
102
- Requires-Dist: autogluon.core[all]==1.4.1b20250821; extra == "tabarena"
103
- Requires-Dist: tabpfn<2.2,>=2.0.9; extra == "tabarena"
97
+ Requires-Dist: interpret-core<0.8,>=0.7.2; extra == "tabarena"
98
+ Requires-Dist: huggingface-hub[torch]; extra == "tabarena"
104
99
  Requires-Dist: torch<2.8,>=2.6; extra == "tabarena"
105
- Requires-Dist: fastai<2.9,>=2.3.1; extra == "tabarena"
106
100
  Requires-Dist: einx; extra == "tabarena"
107
- Requires-Dist: huggingface-hub[torch]; extra == "tabarena"
108
- Requires-Dist: tabicl<0.2,>=0.1.3; extra == "tabarena"
101
+ Requires-Dist: numpy<2.3.0,>=1.25; extra == "tabarena"
109
102
  Requires-Dist: pytabkit<1.7,>=1.6; extra == "tabarena"
103
+ Requires-Dist: fastai<2.9,>=2.3.1; extra == "tabarena"
104
+ Requires-Dist: tabpfn<2.2,>=2.0.9; extra == "tabarena"
105
+ Requires-Dist: catboost<1.3,>=1.2; extra == "tabarena"
110
106
  Requires-Dist: einops<0.9,>=0.7; extra == "tabarena"
107
+ Requires-Dist: autogluon.core[all]==1.4.1b20250823; extra == "tabarena"
108
+ Requires-Dist: xgboost<3.1,>=2.0; extra == "tabarena"
109
+ Requires-Dist: tabicl<0.2,>=0.1.3; extra == "tabarena"
110
+ Requires-Dist: loguru; extra == "tabarena"
111
+ Requires-Dist: omegaconf; extra == "tabarena"
112
+ Requires-Dist: transformers; extra == "tabarena"
111
113
  Requires-Dist: lightgbm<4.7,>=4.0; extra == "tabarena"
114
+ Requires-Dist: spacy<3.9; extra == "tabarena"
112
115
  Requires-Dist: blis<1.2.1,>=0.7.0; (platform_system == "Windows" and python_version == "3.9") and extra == "tabarena"
113
116
  Provides-Extra: tabicl
114
117
  Requires-Dist: tabicl<0.2,>=0.1.3; extra == "tabicl"
@@ -121,6 +124,7 @@ Requires-Dist: torch<2.8,>=2.6; extra == "tabpfnmix"
121
124
  Requires-Dist: huggingface-hub[torch]; extra == "tabpfnmix"
122
125
  Requires-Dist: einops<0.9,>=0.7; extra == "tabpfnmix"
123
126
  Provides-Extra: tests
127
+ Requires-Dist: interpret-core<0.8,>=0.7.2; extra == "tests"
124
128
  Requires-Dist: tabicl<0.2,>=0.1.3; extra == "tests"
125
129
  Requires-Dist: tabpfn<2.2,>=2.0.9; extra == "tests"
126
130
  Requires-Dist: pytabkit<1.7,>=1.6; extra == "tests"
@@ -1,6 +1,6 @@
1
- autogluon.tabular-1.4.1b20250821-py3.9-nspkg.pth,sha256=cQGwpuGPqg1GXscIwt-7PmME1OnSpD-7ixkikJ31WAY,554
1
+ autogluon.tabular-1.4.1b20250823-py3.9-nspkg.pth,sha256=cQGwpuGPqg1GXscIwt-7PmME1OnSpD-7ixkikJ31WAY,554
2
2
  autogluon/tabular/__init__.py,sha256=2OXpJCvENRHubBTYNIPpHX93WWuFZzsJBtTZbNVHVas,400
3
- autogluon/tabular/version.py,sha256=-fdAQH1qSxLHmHM4b_9xaur5t6COmaik-4oCHK_efEY,91
3
+ autogluon/tabular/version.py,sha256=QVRPZmSbEROxD6VvAs3eoKlm8lwUnPqufg_65PsisRo,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
@@ -18,7 +18,7 @@ autogluon/tabular/experimental/plot_leaderboard.py,sha256=BN_kB-zmOZNUYWyI7z9pF6
18
18
  autogluon/tabular/learner/__init__.py,sha256=Hhmk5WpKQHohVmI-veOaKMelKJpIdzeXrmw_DPn3DTU,63
19
19
  autogluon/tabular/learner/abstract_learner.py,sha256=0kf0huvg0nphe-lrdKtNTzdIFr14jzJPsfZDRBkKo3g,55253
20
20
  autogluon/tabular/learner/default_learner.py,sha256=hjdKbcFtIQxQ3-k1LiGOo-w5sLxIIQAyFLs3-R35aw0,24781
21
- autogluon/tabular/models/__init__.py,sha256=-Yi0lq_jsMdKTjZkuRvNDeZdC5KRAsOKRNp-v4bcyy4,1216
21
+ autogluon/tabular/models/__init__.py,sha256=grZ23UfuNZ_LxoNdl-yjIUmq71TeovT5CJPhbatiqvg,1252
22
22
  autogluon/tabular/models/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
23
  autogluon/tabular/models/_utils/rapids_utils.py,sha256=9A2Y10Owva6zhcLkBVQ_T4tOAMDp1idSMzDWhl_QyBI,1083
24
24
  autogluon/tabular/models/_utils/torch_utils.py,sha256=dxs_KMMAOmNkRNjYf_hrzqaHIfkqn1xoKRKqCFbQ1Rk,537
@@ -33,6 +33,11 @@ autogluon/tabular/models/catboost/catboost_utils.py,sha256=zJMIsbgyW_JH0eULhUeu_
33
33
  autogluon/tabular/models/catboost/hyperparameters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
34
  autogluon/tabular/models/catboost/hyperparameters/parameters.py,sha256=Hxi4mPTc2ML9GdpW0TalkDgtsYJLwpEcd-LiyLOsmlA,956
35
35
  autogluon/tabular/models/catboost/hyperparameters/searchspaces.py,sha256=Oe86ixuvd1xJCdSHs2Oh5Ifx0501YJBsdyL2l9Z4nxM,1458
36
+ autogluon/tabular/models/ebm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ autogluon/tabular/models/ebm/ebm_model.py,sha256=vUnOXtBaoqc2JrY1DcJ7Y1KfMem3ZrXE-7cQWn1DwEQ,8693
38
+ autogluon/tabular/models/ebm/hyperparameters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
+ autogluon/tabular/models/ebm/hyperparameters/parameters.py,sha256=IbDv3Ufx8CGHvejqSbAggZKlMq5X9k0Ggclm_DCoiII,1080
40
+ autogluon/tabular/models/ebm/hyperparameters/searchspaces.py,sha256=G6zgHERKt_KJlVfZ06tFKw2aOUuM7DdDyCm0s5RBXoc,2191
36
41
  autogluon/tabular/models/fastainn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
42
  autogluon/tabular/models/fastainn/callbacks.py,sha256=3WvOEwqd1YAVInooKsFOTzAkCLeIXjEelsglYwfofq0,4788
38
43
  autogluon/tabular/models/fastainn/fastai_helpers.py,sha256=gGYzyrAFl8hi8GnsemZNLGZn5xr7cyJXdFl08PIlza4,1393
@@ -70,8 +75,8 @@ autogluon/tabular/models/lr/hyperparameters/__init__.py,sha256=47DEQpj8HBSa-_TIm
70
75
  autogluon/tabular/models/lr/hyperparameters/parameters.py,sha256=Hr5YC13zjbt3CfCbzGj8iXUIuDn-Q7FvDT2uSuiSVlM,1414
71
76
  autogluon/tabular/models/lr/hyperparameters/searchspaces.py,sha256=Igywc-B6qJ9EBLdasrDhW-Ot5FGirIzbXLwv5HRe5Xo,276
72
77
  autogluon/tabular/models/mitra/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
- autogluon/tabular/models/mitra/mitra_model.py,sha256=lHcOtaQwIy4EpgK4TAiuRqQQFhBN3NzSdejFjkNpZPg,13447
74
- autogluon/tabular/models/mitra/sklearn_interface.py,sha256=Znwx1uMagauu1DwcutM_kgGY8maQrxOE0KsP1uS46qE,18751
78
+ autogluon/tabular/models/mitra/mitra_model.py,sha256=6mf37K0a_OK3KTGxWMcP1J3agMpd4EHBcuCgSPqxpXE,14136
79
+ autogluon/tabular/models/mitra/sklearn_interface.py,sha256=vyg8kkmYKzEJRWiehEqEsgZeOCV20tnZAZaaaJkwDuA,17739
75
80
  autogluon/tabular/models/mitra/_internal/__init__.py,sha256=dN2dz1pGMgQTFiSf9oYbyq23iJUxV8QNlOX3qw3KUO4,35
76
81
  autogluon/tabular/models/mitra/_internal/config/__init__.py,sha256=Exu_Sx6-K-D5peDQ_TibsjZpqAALs2-9IXfq8hu1mwU,40
77
82
  autogluon/tabular/models/mitra/_internal/config/config_pretrain.py,sha256=CeaD96EcDX69LdcLTYGlFmYLdBNINEJXRMWmJ6LbhTg,6038
@@ -174,9 +179,9 @@ autogluon/tabular/models/xt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
174
179
  autogluon/tabular/models/xt/xt_model.py,sha256=qOHJ5h1lHI7uYJfbl0BWm-29R3MNp2WeZB9ptcq5Xis,1003
175
180
  autogluon/tabular/predictor/__init__.py,sha256=zCMgjxQlWpDWnr1l1xjBCiK3rWC3N3RoD8UXBnazT74,107
176
181
  autogluon/tabular/predictor/interpretable_predictor.py,sha256=5UeKgnMFsfY65tiO3kxfHBPr03lyswLrgdtjPhI0Y7Q,6934
177
- autogluon/tabular/predictor/predictor.py,sha256=sEnBSfM18OreAPH1fG9bNSsx62wCXKNv494Wowt7Atk,361051
182
+ autogluon/tabular/predictor/predictor.py,sha256=5iexlgiMkDUdGTqvq87MExfsnVdpLWZZrLZcq9lB3do,361108
178
183
  autogluon/tabular/registry/__init__.py,sha256=vZpzX4Xve7bfA9crt5LxjgQv9PPfxbi1E1U6Im0Y_xU,93
179
- autogluon/tabular/registry/_ag_model_registry.py,sha256=Aa-o_KZZiroPBpvZozIBXOlWYvQJN-MVsl_Gl66gkE8,1550
184
+ autogluon/tabular/registry/_ag_model_registry.py,sha256=2Zx5qxXvOdXIbL1FKslNh2M_JM2YG_7GvsCMFF11wDY,1578
180
185
  autogluon/tabular/registry/_model_registry.py,sha256=Rl8Q7BLzaif4hxNxJF20xGE02vrWwh2ZuUaTmA-UJnE,6824
181
186
  autogluon/tabular/testing/__init__.py,sha256=XrEGLmMdmRT6QHNR13M9wna57LO4O3Q4tt27Ca8omAc,79
182
187
  autogluon/tabular/testing/fit_helper.py,sha256=0eTvPtqM8k8hlOUIHQiwTzik4juTjHQt12BySk0klt4,19816
@@ -190,11 +195,11 @@ autogluon/tabular/trainer/model_presets/presets.py,sha256=hoWADaOG576Q_XLV1nY_ju
190
195
  autogluon/tabular/trainer/model_presets/presets_distill.py,sha256=MnFC2GJc6RmDBNAGbsO2XMfo3PjR8cUrZoilWW8gTYQ,3295
191
196
  autogluon/tabular/tuning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
192
197
  autogluon/tabular/tuning/feature_pruner.py,sha256=9iNku8gVbYEkjuKlyITPJDicsNkoraaQOlINQq9iZlQ,6877
193
- autogluon.tabular-1.4.1b20250821.dist-info/LICENSE,sha256=CeipvOyAZxBGUsFoaFqwkx54aPnIKEtm9a5u2uXxEws,10142
194
- autogluon.tabular-1.4.1b20250821.dist-info/METADATA,sha256=JedS27_gdgqCMNhrbxrtfRXXqC9qqYmQ-DAFHwIoqhg,16238
195
- autogluon.tabular-1.4.1b20250821.dist-info/NOTICE,sha256=7nPQuj8Kp-uXsU0S5so3-2dNU5EctS5hDXvvzzehd7E,114
196
- autogluon.tabular-1.4.1b20250821.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
197
- autogluon.tabular-1.4.1b20250821.dist-info/namespace_packages.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
198
- autogluon.tabular-1.4.1b20250821.dist-info/top_level.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
199
- autogluon.tabular-1.4.1b20250821.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
200
- autogluon.tabular-1.4.1b20250821.dist-info/RECORD,,
198
+ autogluon.tabular-1.4.1b20250823.dist-info/LICENSE,sha256=CeipvOyAZxBGUsFoaFqwkx54aPnIKEtm9a5u2uXxEws,10142
199
+ autogluon.tabular-1.4.1b20250823.dist-info/METADATA,sha256=kLo399XYTpuIWA98xYJRhUC0a9ChfQbN9KXI89F2tWA,16451
200
+ autogluon.tabular-1.4.1b20250823.dist-info/NOTICE,sha256=7nPQuj8Kp-uXsU0S5so3-2dNU5EctS5hDXvvzzehd7E,114
201
+ autogluon.tabular-1.4.1b20250823.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
202
+ autogluon.tabular-1.4.1b20250823.dist-info/namespace_packages.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
203
+ autogluon.tabular-1.4.1b20250823.dist-info/top_level.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
204
+ autogluon.tabular-1.4.1b20250823.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
205
+ autogluon.tabular-1.4.1b20250823.dist-info/RECORD,,