autogluon.core 1.2.1b20250109__py3-none-any.whl → 1.2.1b20250111__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.
@@ -47,9 +47,22 @@ class Scorer(object, metaclass=ABCMeta):
47
47
  kwargs : dict, optional
48
48
  kwargs to pass to score_func when called.
49
49
  For example, kwargs = {"beta": 2} when using sklearn.metrics.fbeta_score where beta is a required argument.
50
+ needs_pos_label : bool, default = False
51
+ If True, indicates that the metric requires a positive label specified via the `pos_label` argument.
52
+ Example metrics that require `pos_label`: ["f1", "precision", "recall"]
53
+ Currently this is used for unit testing purposes and does not impact the Scorer object.
50
54
  """
51
55
 
52
- def __init__(self, name: str, score_func: callable, optimum: float, sign: int, kwargs: dict = None):
56
+ def __init__(
57
+ self,
58
+ name: str,
59
+ score_func: callable,
60
+ optimum: float,
61
+ sign: int,
62
+ kwargs: dict = None,
63
+ *,
64
+ needs_pos_label: bool = False,
65
+ ):
53
66
  self.name = name
54
67
  if kwargs is None:
55
68
  kwargs = dict()
@@ -59,6 +72,7 @@ class Scorer(object, metaclass=ABCMeta):
59
72
  if sign != 1 and sign != -1:
60
73
  raise ValueError(f"sign must be one of [1, -1], but was instead {sign}")
61
74
  self._sign = sign
75
+ self._needs_pos_label = needs_pos_label
62
76
  self.alias = set()
63
77
 
64
78
  def __call__(self, y_true, y_pred, sample_weight=None, **kwargs) -> float:
@@ -208,6 +222,15 @@ class Scorer(object, metaclass=ABCMeta):
208
222
  """If True, metric requires quantile predictions rather than predictions or prediction probabilities"""
209
223
  raise NotImplementedError
210
224
 
225
+ @property
226
+ def needs_pos_label(self) -> bool:
227
+ """
228
+ If True, metric requires pos_label to be specified. For most metrics, pos_label defaults to 1.
229
+ If unspecified and the user passes string values or values other than 0 and 1,
230
+ this can lead to exceptions or incorrect output.
231
+ """
232
+ return self._needs_pos_label
233
+
211
234
  score = __call__
212
235
 
213
236
 
@@ -419,6 +442,7 @@ def make_scorer(
419
442
  needs_class: bool = False,
420
443
  needs_threshold: bool = False,
421
444
  needs_quantile: bool = False,
445
+ needs_pos_label: bool = False,
422
446
  metric_kwargs: dict = None,
423
447
  **kwargs,
424
448
  ) -> Scorer:
@@ -474,6 +498,12 @@ def make_scorer(
474
498
  This only works for quantile regression.
475
499
  Examples: ["pinball_loss"]
476
500
 
501
+ needs_pos_label : bool, default=False
502
+ Whether score_func supports a pos_label argument.
503
+ For binary classification, input y_true and y_pred must contain the pos_label in order for the metric to be correctly calculated.
504
+ This only works for binary classification.
505
+ Examples: ["f1", "precision", "recall"]
506
+
477
507
  metric_kwargs : dict
478
508
  Additional parameters to be passed to score_func, merged with kwargs if both are present.
479
509
  metric_kwargs keys will override kwargs keys if keys are shared between them.
@@ -520,6 +550,7 @@ def make_scorer(
520
550
  optimum=optimum,
521
551
  sign=sign,
522
552
  kwargs=kwargs,
553
+ needs_pos_label=needs_pos_label,
523
554
  )
524
555
 
525
556
  if isinstance(needs_pred, bool) and needs_pred != scorer.needs_pred:
@@ -590,15 +621,17 @@ accuracy = make_scorer("accuracy", sklearn.metrics.accuracy_score, needs_class=T
590
621
  accuracy.add_alias("acc")
591
622
 
592
623
  balanced_accuracy = make_scorer("balanced_accuracy", classification_metrics.balanced_accuracy, needs_class=True)
593
- f1 = make_scorer("f1", sklearn.metrics.f1_score, needs_class=True)
594
624
  mcc = make_scorer("mcc", sklearn.metrics.matthews_corrcoef, needs_class=True)
595
625
 
596
626
  # Score functions that need decision values
597
627
  roc_auc = make_scorer("roc_auc", classification_metrics.customized_binary_roc_auc_score, greater_is_better=True, needs_threshold=True)
598
628
 
599
629
  average_precision = make_scorer("average_precision", sklearn.metrics.average_precision_score, needs_threshold=True)
600
- precision = make_scorer("precision", sklearn.metrics.precision_score, needs_class=True)
601
- recall = make_scorer("recall", sklearn.metrics.recall_score, needs_class=True)
630
+
631
+ # Score functions that need pos_label
632
+ f1 = make_scorer("f1", sklearn.metrics.f1_score, needs_class=True, needs_pos_label=True)
633
+ precision = make_scorer("precision", sklearn.metrics.precision_score, needs_class=True, needs_pos_label=True)
634
+ recall = make_scorer("recall", sklearn.metrics.recall_score, needs_class=True, needs_pos_label=True)
602
635
 
603
636
  # Register other metrics
604
637
  quadratic_kappa = make_scorer("quadratic_kappa", classification_metrics.quadratic_kappa, needs_class=True)
@@ -692,7 +725,6 @@ for scorer in [
692
725
 
693
726
 
694
727
  for _name, _metric in [("precision", sklearn.metrics.precision_score), ("recall", sklearn.metrics.recall_score), ("f1", sklearn.metrics.f1_score)]:
695
- globals()[_name] = make_scorer(_name, _metric, needs_class=True)
696
728
  _add_scorer_to_metric_dict(metric_dict=BINARY_METRICS, scorer=globals()[_name])
697
729
  for average in ["macro", "micro", "weighted"]:
698
730
  qualified_name = "{0}_{1}".format(_name, average)
@@ -720,7 +752,7 @@ for _name, _metric, _kwargs in [
720
752
  _add_scorer_to_metric_dict(metric_dict=MULTICLASS_METRICS, scorer=globals()[qualified_name])
721
753
 
722
754
 
723
- METRICS = {
755
+ METRICS: dict[str, dict[str, Scorer]] = {
724
756
  BINARY: BINARY_METRICS,
725
757
  MULTICLASS: MULTICLASS_METRICS,
726
758
  REGRESSION: REGRESSION_METRICS,
@@ -736,14 +768,16 @@ def _get_valid_metric_problem_types(metric: str):
736
768
  return problem_types_valid
737
769
 
738
770
 
739
- def get_metric(metric, problem_type=None, metric_type=None) -> Scorer:
771
+ def get_metric(metric, problem_type: str = None, metric_type: str = None) -> Scorer:
740
772
  """Returns metric function by using its name if the metric is str.
741
773
  Performs basic check for metric compatibility with given problem type."""
774
+ if metric_type is None:
775
+ metric_type = "metric"
742
776
 
743
777
  if metric is not None and isinstance(metric, str):
744
778
  if metric == "soft_log_loss":
745
779
  if problem_type == QUANTILE:
746
- raise ValueError(f"{metric_type}={metric} can not be used for quantile problems")
780
+ raise ValueError(f"{metric_type}='{metric}' can not be used for quantile problems")
747
781
  from .softclass_metrics import soft_log_loss
748
782
 
749
783
  return soft_log_loss
@@ -25,7 +25,13 @@ def balanced_accuracy(solution, prediction):
25
25
 
26
26
  if y_type == "binary":
27
27
  # Do not transform into any multiclass representation
28
- pass
28
+ unique_sol = np.unique(solution)
29
+ unique_pred = np.unique(prediction)
30
+ classes = np.unique(np.concatenate((unique_sol, unique_pred)))
31
+ if set(classes) != {0, 1}:
32
+ pos_class = classes[-1]
33
+ solution = np.array([1 if i == pos_class else 0 for i in solution])
34
+ prediction = np.array([1 if i == pos_class else 0 for i in prediction])
29
35
 
30
36
  elif y_type == "multiclass":
31
37
  n = len(solution)
@@ -1,6 +1,12 @@
1
1
  _DEFAULT_TAGS = {
2
- # Whether the model can produce out-of-fold (or similar) predictions of the training data without being significantly overfit.
2
+ # [Advanced] Whether the model can support fitting on 100% of the data and then getting unbiased predictions on the same data.
3
+ # it fit on by exploiting special properties of the model architecture.
4
+ # For example, random forest uses only a portion of the training data randomly for each decision tree.
5
+ # We can therefore use the out-of-bag predictions to obtain unbiased predictions.
6
+ # Note that models that specify this as True must implement a `predict_proba_oof` method.
7
+ # Refer to RandomForestModel or KNeighborsModel for reference implementations.
3
8
  "valid_oof": False,
9
+
4
10
  # Whether the model can be refit using the combined train and val data as training and no validation data without issue.
5
11
  # TL;DR: Keep value as False unless you know what you are doing. This is advanced functionality.
6
12
  # If False, when calling predictor.refit_full(), this model will simply be duplicated (if non-bag) or will have the first fold model duplicated (if bag).
@@ -1793,6 +1793,7 @@ class AbstractModel:
1793
1793
  fit_kwargs["num_classes"] = self.num_classes
1794
1794
  fit_kwargs["sample_weight"] = kwargs.get("sample_weight", None)
1795
1795
  fit_kwargs["sample_weight_val"] = kwargs.get("sample_weight_val", None)
1796
+ fit_kwargs["verbosity"] = kwargs.get("verbosity", 2)
1796
1797
  train_fn_kwargs = dict(
1797
1798
  model_cls=model_cls,
1798
1799
  init_params=init_params,
@@ -193,19 +193,19 @@ class BaggedEnsembleModel(AbstractModel):
193
193
 
194
194
  def _fit(
195
195
  self,
196
- X,
197
- y,
198
- X_val=None,
199
- y_val=None,
200
- X_pseudo=None,
201
- y_pseudo=None,
202
- k_fold=None,
203
- k_fold_start=0,
204
- k_fold_end=None,
205
- n_repeats=1,
206
- n_repeat_start=0,
207
- groups=None,
208
- _skip_oof=False,
196
+ X: pd.DataFrame,
197
+ y: pd.Series,
198
+ X_val: pd.DataFrame = None,
199
+ y_val: pd.Series = None,
200
+ X_pseudo: pd.DataFrame = None,
201
+ y_pseudo: pd.Series = None,
202
+ k_fold: int = None,
203
+ k_fold_start: int = 0,
204
+ k_fold_end: int = None,
205
+ n_repeats: int = 1,
206
+ n_repeat_start: int = 0,
207
+ groups: pd.Series = None,
208
+ _skip_oof: bool = False,
209
209
  **kwargs,
210
210
  ):
211
211
  use_child_oof = self.params.get("use_child_oof", False)
@@ -223,8 +223,6 @@ class BaggedEnsembleModel(AbstractModel):
223
223
  k_fold, k_fold_end = self._update_k_fold(k_fold=k_fold, k_fold_end=k_fold_end)
224
224
  if k_fold is None and groups is None:
225
225
  k_fold = 5
226
- if k_fold is not None and k_fold < 1:
227
- k_fold = 1
228
226
  if k_fold is None or k_fold > 1:
229
227
  k_fold = self._get_cv_splitter(n_splits=k_fold, n_repeats=n_repeats, groups=groups).n_splits
230
228
  max_sets = self._get_model_params().get("max_sets", None)
@@ -238,6 +236,7 @@ class BaggedEnsembleModel(AbstractModel):
238
236
  n_repeats=n_repeats,
239
237
  n_repeat_start=n_repeat_start,
240
238
  groups=groups,
239
+ use_child_oof=use_child_oof,
241
240
  )
242
241
  if k_fold_end is None:
243
242
  k_fold_end = k_fold
@@ -327,7 +326,7 @@ class BaggedEnsembleModel(AbstractModel):
327
326
  else:
328
327
  return self
329
328
 
330
- def _update_k_fold(self, k_fold, k_fold_end=None, verbose=True):
329
+ def _update_k_fold(self, k_fold: int, k_fold_end: int = None, verbose: bool = True) -> tuple[int, int]:
331
330
  """Update k_fold and k_fold_end in case num_folds was specified"""
332
331
  k_fold_override = self.params.get("num_folds", None)
333
332
  if k_fold_override is not None:
@@ -343,7 +342,17 @@ class BaggedEnsembleModel(AbstractModel):
343
342
  assert self.is_initialized(), "Model must be initialized before calling self._get_child_aux_val!"
344
343
  return self._params_aux_child.get(key, default)
345
344
 
346
- def _validate_bag_kwargs(self, *, k_fold, k_fold_start, k_fold_end, n_repeats, n_repeat_start, groups):
345
+ def _validate_bag_kwargs(
346
+ self,
347
+ *,
348
+ k_fold: int,
349
+ k_fold_start: int,
350
+ k_fold_end: int,
351
+ n_repeats: int,
352
+ n_repeat_start: int,
353
+ groups: pd.Series | None,
354
+ use_child_oof: bool,
355
+ ):
347
356
  if groups is not None:
348
357
  if self._n_repeats_finished != 0:
349
358
  raise AssertionError("Bagged models cannot call fit with `groups` specified when a full k-fold set has already been fit.")
@@ -356,7 +365,7 @@ class BaggedEnsembleModel(AbstractModel):
356
365
  if k_fold is None:
357
366
  raise ValueError("k_fold cannot be None.")
358
367
  if k_fold < 1:
359
- raise ValueError(f"k_fold must be equal or greater than 1, value: ({k_fold})")
368
+ raise ValueError(f"k_fold must be equal or greater than 1, value: {k_fold}")
360
369
  if n_repeat_start != self._n_repeats_finished:
361
370
  raise ValueError(f"n_repeat_start must equal self._n_repeats_finished, values: ({n_repeat_start}, {self._n_repeats_finished})")
362
371
  if n_repeats <= n_repeat_start:
@@ -370,7 +379,26 @@ class BaggedEnsembleModel(AbstractModel):
370
379
  # TODO: Remove this limitation
371
380
  raise ValueError(f"k_fold_end must equal k_fold when (n_repeats - n_repeat_start) > 1, values: ({k_fold_end}, {k_fold})")
372
381
  if self._k is not None and self._k != k_fold:
373
- raise ValueError(f"k_fold must equal previously fit k_fold value for the current n_repeat, values: (({k_fold}, {self._k})")
382
+ raise ValueError(f"k_fold must equal previously fit k_fold value for the current n_repeat, values: ({k_fold}, {self._k})")
383
+ if use_child_oof and not self._get_tags_child().get("valid_oof", False):
384
+ raise AssertionError(
385
+ f"`use_child_oof=True` was specified, "
386
+ f"but the model {self._child_type.__name__} does not support this option. (valid_oof=False)\n"
387
+ f"\tTo enable this logic, `{self._child_type.__name__}._predict_proba_oof` must be implemented "
388
+ f"and `tags['valid_oof'] = True` must be set in `{self._child_type.__name__}._more_tags`."
389
+ )
390
+ if k_fold == 1 and not use_child_oof and not self._get_tags().get("can_get_oof_from_train", False):
391
+ logger.log(
392
+ 30,
393
+ f"\tWARNING: Fitting bagged model with `k_fold=1`, "
394
+ f"but this model doesn't support getting out-of-fold predictions from training data!\n"
395
+ f"\t\tThe model will be fit on 100% of the training data without any validation split.\n"
396
+ f"\t\tIt will then predict on the same data used to train for generating out-of-fold predictions. "
397
+ f"This will likely be EXTREMELY overfit and produce terrible results.\n"
398
+ f"\t\tWe strongly recommend not forcing bagged models to use `k_fold=1`. "
399
+ f"Instead, specify `use_child_oof=True` if the model supports this option."
400
+ )
401
+
374
402
 
375
403
  def predict_proba_children(
376
404
  self,
@@ -557,8 +585,9 @@ class BaggedEnsembleModel(AbstractModel):
557
585
  logger.log(
558
586
  30,
559
587
  f"\tWARNING: Setting `self._oof_pred_proba` by predicting on train directly! "
560
- f"This is probably a bug and should be investigated...\n"
561
- f'\tIf this is intended, set the model tag "can_get_oof_from_train" to True '
588
+ f"This is probably a bug or the user specified `num_folds=1` "
589
+ f"as an `ag_args_ensemble` hyperparameter... Results may be very poor.\n"
590
+ f'\t\tIf this is intended, set the model tag "can_get_oof_from_train" to True '
562
591
  f"in `{self.__class__.__name__}._more_tags` to avoid this warning.",
563
592
  )
564
593
  self._oof_pred_proba = model_base.predict_proba(X=X) # TODO: Cheater value, will be overfit to valid set
@@ -1428,6 +1457,7 @@ class BaggedEnsembleModel(AbstractModel):
1428
1457
  fit_kwargs["num_classes"] = self.num_classes
1429
1458
  fit_kwargs["sample_weight"] = kwargs.get("sample_weight", None)
1430
1459
  fit_kwargs["sample_weight_val"] = kwargs.get("sample_weight_val", None)
1460
+ fit_kwargs["verbosity"] = kwargs.get("verbosity", 2)
1431
1461
  fit_kwargs.pop("time_limit", None) # time_limit already set in hpo_executor
1432
1462
  train_fn_kwargs = dict(
1433
1463
  model_cls=model_cls,
autogluon/core/version.py CHANGED
@@ -1,3 +1,3 @@
1
1
  """This is the autogluon version file."""
2
- __version__ = '1.2.1b20250109'
2
+ __version__ = '1.2.1b20250111'
3
3
  __lite__ = False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: autogluon.core
3
- Version: 1.2.1b20250109
3
+ Version: 1.2.1b20250111
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
@@ -43,24 +43,24 @@ Requires-Dist: tqdm<5,>=4.38
43
43
  Requires-Dist: requests
44
44
  Requires-Dist: matplotlib<3.11,>=3.7.0
45
45
  Requires-Dist: boto3<2,>=1.10
46
- Requires-Dist: autogluon.common==1.2.1b20250109
46
+ Requires-Dist: autogluon.common==1.2.1b20250111
47
47
  Provides-Extra: all
48
48
  Requires-Dist: hyperopt<0.2.8,>=0.2.7; extra == "all"
49
- Requires-Dist: ray[default,tune]<2.40,>=2.10.0; extra == "all"
49
+ Requires-Dist: ray[default,tune]<2.41,>=2.10.0; extra == "all"
50
+ Requires-Dist: ray[default]<2.41,>=2.10.0; extra == "all"
50
51
  Requires-Dist: pyarrow>=15.0.0; extra == "all"
51
- Requires-Dist: ray[default]<2.40,>=2.10.0; extra == "all"
52
52
  Provides-Extra: ray
53
- Requires-Dist: ray[default]<2.40,>=2.10.0; extra == "ray"
53
+ Requires-Dist: ray[default]<2.41,>=2.10.0; extra == "ray"
54
54
  Provides-Extra: raytune
55
55
  Requires-Dist: pyarrow>=15.0.0; extra == "raytune"
56
- Requires-Dist: ray[default,tune]<2.40,>=2.10.0; extra == "raytune"
56
+ Requires-Dist: ray[default,tune]<2.41,>=2.10.0; extra == "raytune"
57
57
  Requires-Dist: hyperopt<0.2.8,>=0.2.7; extra == "raytune"
58
58
  Provides-Extra: tests
59
- Requires-Dist: pytest; extra == "tests"
60
59
  Requires-Dist: flake8; extra == "tests"
61
- Requires-Dist: types-setuptools; extra == "tests"
62
60
  Requires-Dist: pytest-mypy; extra == "tests"
61
+ Requires-Dist: types-setuptools; extra == "tests"
63
62
  Requires-Dist: types-requests; extra == "tests"
63
+ Requires-Dist: pytest; extra == "tests"
64
64
 
65
65
 
66
66
 
@@ -74,7 +74,7 @@ Requires-Dist: types-requests; extra == "tests"
74
74
  [![Python Versions](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12-blue)](https://pypi.org/project/autogluon/)
75
75
  [![Downloads](https://pepy.tech/badge/autogluon/month)](https://pepy.tech/project/autogluon)
76
76
  [![GitHub license](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](./LICENSE)
77
- [![Discord](https://img.shields.io/discord/1043248669505368144?logo=discord&style=flat)](https://discord.gg/wjUmjqAc2N)
77
+ [![Discord](https://img.shields.io/discord/1043248669505368144?color=7289da&label=Discord&logo=discord&logoColor=ffffff)](https://discord.gg/wjUmjqAc2N)
78
78
  [![Twitter](https://img.shields.io/twitter/follow/autogluon?style=social)](https://twitter.com/autogluon)
79
79
  [![Continuous Integration](https://github.com/autogluon/autogluon/actions/workflows/continuous_integration.yml/badge.svg)](https://github.com/autogluon/autogluon/actions/workflows/continuous_integration.yml)
80
80
  [![Platform Tests](https://github.com/autogluon/autogluon/actions/workflows/platform_tests-command.yml/badge.svg?event=schedule)](https://github.com/autogluon/autogluon/actions/workflows/platform_tests-command.yml)
@@ -1,9 +1,9 @@
1
- autogluon.core-1.2.1b20250109-py3.8-nspkg.pth,sha256=cQGwpuGPqg1GXscIwt-7PmME1OnSpD-7ixkikJ31WAY,554
1
+ autogluon.core-1.2.1b20250111-py3.8-nspkg.pth,sha256=cQGwpuGPqg1GXscIwt-7PmME1OnSpD-7ixkikJ31WAY,554
2
2
  autogluon/core/__init__.py,sha256=8KfvvHzXX3a4q6z43Dw1yE7VtbAoiSMaglVpKDy6Xeg,245
3
3
  autogluon/core/_setup_utils.py,sha256=NqlGK6So0KG5M0LbBJNT1TI3iAmG93kd_6Brih6y2gQ,6935
4
4
  autogluon/core/constants.py,sha256=nEVLdSFJ-5O-tz3jUD3qPX65RMp7g8qOR38XlurbP4Y,3403
5
5
  autogluon/core/problem_type.py,sha256=XJmMgeNBgS7u43pDK-spTivatPyh_INOXveEXwQt-Rw,2993
6
- autogluon/core/version.py,sha256=5mSZaNG9jGAASBrz7MYFS3d2lViwh4cxOciupwpM-l4,90
6
+ autogluon/core/version.py,sha256=TigPRfmNcZyeXSLH943LINQSmE-Pv8VStKn7i2xjUOM,90
7
7
  autogluon/core/augmentation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  autogluon/core/augmentation/distill_utils.py,sha256=JBlp2WOMNKoJv8aKVwJVRQSalSk8jx36HM7-k_VvkhY,9404
9
9
  autogluon/core/calibrate/__init__.py,sha256=eU6qLj7DKUhaz2HHNHDrfroRaLM-mhuSncK_v1UP4F8,62
@@ -31,23 +31,23 @@ autogluon/core/hpo/space_converter.py,sha256=pAQpSUonRGcR8l2uyCVJCxY-bd031vlU5rU
31
31
  autogluon/core/learner/__init__.py,sha256=pAEQBcY-xq-HG2QbHdt9V4iq1RSlz6gfcxNa40abGVY,77
32
32
  autogluon/core/learner/abstract_learner.py,sha256=lWXh_AY26t8eCVegqluu0FSN_suqVGeokrnf7frCoEg,5801
33
33
  autogluon/core/learning_curves/plot_curves.py,sha256=GxWeX6gvp9XlA2QwtBi9cdaxjtbY3mSngWXl-EjM8bE,3141
34
- autogluon/core/metrics/__init__.py,sha256=l-kAH1foVm8Y3Q57KmPTgksXwNjOMCH0UkAnuiEQtkk,28438
35
- autogluon/core/metrics/classification_metrics.py,sha256=NZDvHD2Yrq-keYkk-APDaVAXR4gYpQLWDubVKOiCf_U,17964
34
+ autogluon/core/metrics/__init__.py,sha256=zbfjLVA7qcYwyTWAo54XZR7MklYgyOjaDZNCcMPyHPg,29837
35
+ autogluon/core/metrics/classification_metrics.py,sha256=kKbq1cBMmc_gEm3AfXBCTk5KJDcrzcg-6gmQ_wONhFU,18342
36
36
  autogluon/core/metrics/quantile_metrics.py,sha256=yjnKSMuLdee4vemXIoxitCJWf_3lvE-RXlJ4V1371w4,1393
37
37
  autogluon/core/metrics/score_func.py,sha256=RIFOZMhPKYRFXBufoe5XIY1BRDr8aqGA-2zVwuTKi0A,4684
38
38
  autogluon/core/metrics/softclass_metrics.py,sha256=inn35DfftLZey0mK3OuMJPzm58eZgQ38vnEBO8sZ3mg,1272
39
39
  autogluon/core/models/__init__.py,sha256=dg3onYq5wW3-sfdNurnSIGpX0rpEjG_abgzyfwDM77M,408
40
40
  autogluon/core/models/_utils.py,sha256=qswE9n1ge1AJSExgstEbrZiMFmMRa4Mf5Sz8D9-XU6c,2091
41
41
  autogluon/core/models/abstract/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
- autogluon/core/models/abstract/_tags.py,sha256=9GZMHdbek9D5-8X-vtCXNw-eICFwoPZ82zn3j0iYyo0,2962
43
- autogluon/core/models/abstract/abstract_model.py,sha256=lIXdCPmMndRTJMdDh09shlW8BblEDcsZTNRJwJZ5Li8,120364
42
+ autogluon/core/models/abstract/_tags.py,sha256=Qr_3an0ZMig24S3OwISa-nTFfWHQe3pwPTiXq4zlEec,3409
43
+ autogluon/core/models/abstract/abstract_model.py,sha256=bi0WOb51WJG6tAWuo3GKKgAfSSrBStwKYHEkDhVQeD4,120425
44
44
  autogluon/core/models/abstract/abstract_nn_model.py,sha256=IId0ivO8uVvmpnK9OiM2CtPVrP1ewOaQQKtQUDtK7_k,4818
45
45
  autogluon/core/models/abstract/model_trial.py,sha256=PKEo1jfLSBCOLM42QE5VBD1u41MaVMRk31zhNhLiqTw,5035
46
46
  autogluon/core/models/dummy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
47
  autogluon/core/models/dummy/_dummy_quantile_regressor.py,sha256=i-ZW2flJ60jsMfMK24IP39Xwc55-UlBDvHmqanIf29Q,664
48
48
  autogluon/core/models/dummy/dummy_model.py,sha256=at2FZSM2_LuAQ78E2YrRCRt3UaKMyyOnc6p2rtZgA2w,1414
49
49
  autogluon/core/models/ensemble/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
- autogluon/core/models/ensemble/bagged_ensemble_model.py,sha256=985fkEDQO_TzA5A89KlcHRijXrSnL12UXENoVusfvYY,69794
50
+ autogluon/core/models/ensemble/bagged_ensemble_model.py,sha256=HuyRqdtsdN2z_t9Fa9qWN3U5dz3O7MGYn2qe4BKU9Go,71600
51
51
  autogluon/core/models/ensemble/fold_fitting_strategy.py,sha256=01vzNVvE4FIFgD6YqbhK63XoUlSztnVFsrDdsoqm75U,47021
52
52
  autogluon/core/models/ensemble/ray_parallel_fold_fitting_strategy.py,sha256=8RASa-eV6n9kUgbqQHNt7k4IrvuB9NdrunIMLYOLwgA,2068
53
53
  autogluon/core/models/ensemble/stacker_ensemble_model.py,sha256=DuDXgozvG9JYYkRvGACA7EXDAtj3Tz_uAjXTfxu5tFg,18041
@@ -89,11 +89,11 @@ autogluon/core/utils/utils.py,sha256=K05ewQuGauLnVaYwccNDk1moUDg2EEzdSlq8gsw6JVM
89
89
  autogluon/core/utils/version_utils.py,sha256=5-r8hLRKTaZbj5qo2uzE_2E4casH49Ye3WyeHlgHuz4,3252
90
90
  autogluon/core/utils/loaders/__init__.py,sha256=W5FAdQvpDcn_uisqJrlSAObWVta-YjJLKGN3NCbEgIo,109
91
91
  autogluon/core/utils/savers/__init__.py,sha256=bGWciSxAkj6u06vOC4pTvr22f_1ey0glgvmjCMEOm78,89
92
- autogluon.core-1.2.1b20250109.dist-info/LICENSE,sha256=CeipvOyAZxBGUsFoaFqwkx54aPnIKEtm9a5u2uXxEws,10142
93
- autogluon.core-1.2.1b20250109.dist-info/METADATA,sha256=95Axw2YTNj5SCvwB08GAT1jQV0RS6zh5Dkxg0XU6O3o,12295
94
- autogluon.core-1.2.1b20250109.dist-info/NOTICE,sha256=7nPQuj8Kp-uXsU0S5so3-2dNU5EctS5hDXvvzzehd7E,114
95
- autogluon.core-1.2.1b20250109.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
96
- autogluon.core-1.2.1b20250109.dist-info/namespace_packages.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
97
- autogluon.core-1.2.1b20250109.dist-info/top_level.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
98
- autogluon.core-1.2.1b20250109.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
99
- autogluon.core-1.2.1b20250109.dist-info/RECORD,,
92
+ autogluon.core-1.2.1b20250111.dist-info/LICENSE,sha256=CeipvOyAZxBGUsFoaFqwkx54aPnIKEtm9a5u2uXxEws,10142
93
+ autogluon.core-1.2.1b20250111.dist-info/METADATA,sha256=SjvIvISrTQooEHQlUsjRb26e1L0lt00JCd1_tZ9JLgE,12328
94
+ autogluon.core-1.2.1b20250111.dist-info/NOTICE,sha256=7nPQuj8Kp-uXsU0S5so3-2dNU5EctS5hDXvvzzehd7E,114
95
+ autogluon.core-1.2.1b20250111.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
96
+ autogluon.core-1.2.1b20250111.dist-info/namespace_packages.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
97
+ autogluon.core-1.2.1b20250111.dist-info/top_level.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
98
+ autogluon.core-1.2.1b20250111.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
99
+ autogluon.core-1.2.1b20250111.dist-info/RECORD,,