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.
- autogluon/core/metrics/__init__.py +42 -8
- autogluon/core/metrics/classification_metrics.py +7 -1
- autogluon/core/models/abstract/_tags.py +7 -1
- autogluon/core/models/abstract/abstract_model.py +1 -0
- autogluon/core/models/ensemble/bagged_ensemble_model.py +51 -21
- autogluon/core/version.py +1 -1
- {autogluon.core-1.2.1b20250109.dist-info → autogluon.core-1.2.1b20250111.dist-info}/METADATA +9 -9
- {autogluon.core-1.2.1b20250109.dist-info → autogluon.core-1.2.1b20250111.dist-info}/RECORD +15 -15
- /autogluon.core-1.2.1b20250109-py3.8-nspkg.pth → /autogluon.core-1.2.1b20250111-py3.8-nspkg.pth +0 -0
- {autogluon.core-1.2.1b20250109.dist-info → autogluon.core-1.2.1b20250111.dist-info}/LICENSE +0 -0
- {autogluon.core-1.2.1b20250109.dist-info → autogluon.core-1.2.1b20250111.dist-info}/NOTICE +0 -0
- {autogluon.core-1.2.1b20250109.dist-info → autogluon.core-1.2.1b20250111.dist-info}/WHEEL +0 -0
- {autogluon.core-1.2.1b20250109.dist-info → autogluon.core-1.2.1b20250111.dist-info}/namespace_packages.txt +0 -0
- {autogluon.core-1.2.1b20250109.dist-info → autogluon.core-1.2.1b20250111.dist-info}/top_level.txt +0 -0
- {autogluon.core-1.2.1b20250109.dist-info → autogluon.core-1.2.1b20250111.dist-info}/zip-safe +0 -0
@@ -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__(
|
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
|
-
|
601
|
-
|
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
|
-
|
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
|
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(
|
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:
|
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: (
|
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
|
561
|
-
f
|
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
{autogluon.core-1.2.1b20250109.dist-info → autogluon.core-1.2.1b20250111.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: autogluon.core
|
3
|
-
Version: 1.2.
|
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.
|
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.
|
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.
|
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.
|
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
|
[](https://pypi.org/project/autogluon/)
|
75
75
|
[](https://pepy.tech/project/autogluon)
|
76
76
|
[](./LICENSE)
|
77
|
-
[](https://discord.gg/wjUmjqAc2N)
|
78
78
|
[](https://twitter.com/autogluon)
|
79
79
|
[](https://github.com/autogluon/autogluon/actions/workflows/continuous_integration.yml)
|
80
80
|
[](https://github.com/autogluon/autogluon/actions/workflows/platform_tests-command.yml)
|
@@ -1,9 +1,9 @@
|
|
1
|
-
autogluon.core-1.2.
|
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=
|
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=
|
35
|
-
autogluon/core/metrics/classification_metrics.py,sha256=
|
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=
|
43
|
-
autogluon/core/models/abstract/abstract_model.py,sha256=
|
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=
|
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.
|
93
|
-
autogluon.core-1.2.
|
94
|
-
autogluon.core-1.2.
|
95
|
-
autogluon.core-1.2.
|
96
|
-
autogluon.core-1.2.
|
97
|
-
autogluon.core-1.2.
|
98
|
-
autogluon.core-1.2.
|
99
|
-
autogluon.core-1.2.
|
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,,
|
/autogluon.core-1.2.1b20250109-py3.8-nspkg.pth → /autogluon.core-1.2.1b20250111-py3.8-nspkg.pth
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{autogluon.core-1.2.1b20250109.dist-info → autogluon.core-1.2.1b20250111.dist-info}/top_level.txt
RENAMED
File without changes
|
{autogluon.core-1.2.1b20250109.dist-info → autogluon.core-1.2.1b20250111.dist-info}/zip-safe
RENAMED
File without changes
|