autogluon.tabular 1.4.1b20250819__tar.gz → 1.4.1b20250821__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/PKG-INFO +1 -1
- autogluon.tabular-1.4.1b20250821/src/autogluon/tabular/configs/pipeline_presets.py +130 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/configs/presets_configs.py +0 -3
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/models/tab2d.py +10 -10
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/predictor/predictor.py +53 -52
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/version.py +1 -1
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon.tabular.egg-info/PKG-INFO +1 -1
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon.tabular.egg-info/SOURCES.txt +1 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon.tabular.egg-info/requires.txt +25 -25
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/setup.cfg +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/setup.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/configs/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/configs/config_helper.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/configs/feature_generator_presets.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/configs/hyperparameter_configs.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/configs/zeroshot/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/configs/zeroshot/zeroshot_portfolio_2023.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/configs/zeroshot/zeroshot_portfolio_2025.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/experimental/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/experimental/_scikit_mixin.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/experimental/_tabular_classifier.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/experimental/_tabular_regressor.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/experimental/plot_leaderboard.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/learner/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/learner/abstract_learner.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/learner/default_learner.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/_utils/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/_utils/rapids_utils.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/_utils/torch_utils.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/automm/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/automm/automm_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/automm/ft_transformer.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/catboost/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/catboost/callbacks.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/catboost/catboost_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/catboost/catboost_softclass_utils.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/catboost/catboost_utils.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/catboost/hyperparameters/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/catboost/hyperparameters/parameters.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/catboost/hyperparameters/searchspaces.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/fastainn/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/fastainn/callbacks.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/fastainn/fastai_helpers.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/fastainn/hyperparameters/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/fastainn/hyperparameters/parameters.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/fastainn/hyperparameters/searchspaces.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/fastainn/imports_helper.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/fastainn/quantile_helpers.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/fastainn/tabular_nn_fastai.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/fasttext/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/fasttext/fasttext_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/fasttext/hyperparameters/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/fasttext/hyperparameters/parameters.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/image_prediction/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/image_prediction/image_predictor.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/imodels/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/imodels/imodels_models.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/knn/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/knn/_knn_loo_variants.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/knn/knn_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/knn/knn_rapids_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/knn/knn_utils.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/lgb/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/lgb/callbacks.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/lgb/hyperparameters/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/lgb/hyperparameters/parameters.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/lgb/hyperparameters/searchspaces.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/lgb/lgb_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/lgb/lgb_utils.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/lr/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/lr/hyperparameters/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/lr/hyperparameters/parameters.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/lr/hyperparameters/searchspaces.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/lr/lr_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/lr/lr_preprocessing_utils.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/lr/lr_rapids_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/config/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/config/config_pretrain.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/config/config_run.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/config/enums.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/core/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/core/callbacks.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/core/get_loss.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/core/get_optimizer.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/core/get_scheduler.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/core/prediction_metrics.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/core/trainer_finetune.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/data/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/data/collator.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/data/dataset_finetune.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/data/dataset_split.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/data/preprocessor.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/models/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/models/base.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/models/embedding.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/utils/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/_internal/utils/set_seed.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/mitra_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/mitra/sklearn_interface.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/realmlp/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/realmlp/realmlp_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/rf/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/rf/compilers/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/rf/compilers/native.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/rf/compilers/onnx.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/rf/rf_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/rf/rf_quantile.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/rf/rf_rapids_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabicl/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabicl/tabicl_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabm/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabm/_tabm_internal.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabm/rtdl_num_embeddings.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabm/tabm_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabm/tabm_reference.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/config/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/config/config_run.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/core/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/core/callbacks.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/core/collator.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/core/dataset_split.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/core/enums.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/core/get_loss.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/core/get_optimizer.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/core/get_scheduler.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/core/trainer_finetune.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/core/y_transformer.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/data/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/data/dataset_finetune.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/data/preprocessor.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/models/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/models/foundation/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/models/foundation/embedding.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/models/foundation/foundation_transformer.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/results/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/results/prediction_metrics.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/tabpfnmix_classifier.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/_internal/tabpfnmix_regressor.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnmix/tabpfnmix_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnv2/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnv2/rfpfn/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnv2/rfpfn/configs.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnv2/rfpfn/scoring_utils.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnv2/rfpfn/sklearn_based_decision_tree_tabpfn.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnv2/rfpfn/sklearn_based_random_forest_tabpfn.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnv2/rfpfn/sklearn_compat.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnv2/rfpfn/utils.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabpfnv2/tabpfnv2_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabular_nn/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabular_nn/compilers/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabular_nn/compilers/native.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabular_nn/compilers/onnx.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabular_nn/hyperparameters/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabular_nn/hyperparameters/parameters.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabular_nn/hyperparameters/searchspaces.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabular_nn/torch/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabular_nn/torch/tabular_nn_torch.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabular_nn/torch/tabular_torch_dataset.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabular_nn/torch/torch_network_modules.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabular_nn/utils/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabular_nn/utils/categorical_encoders.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabular_nn/utils/data_preprocessor.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/tabular_nn/utils/nn_architecture_utils.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/text_prediction/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/text_prediction/text_prediction_v1_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/xgboost/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/xgboost/callbacks.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/xgboost/hyperparameters/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/xgboost/hyperparameters/parameters.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/xgboost/hyperparameters/searchspaces.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/xgboost/xgboost_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/xgboost/xgboost_utils.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/xt/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/models/xt/xt_model.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/predictor/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/predictor/interpretable_predictor.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/registry/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/registry/_ag_model_registry.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/registry/_model_registry.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/testing/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/testing/fit_helper.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/testing/generate_datasets.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/testing/model_fit_helper.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/trainer/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/trainer/abstract_trainer.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/trainer/auto_trainer.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/trainer/model_presets/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/trainer/model_presets/presets.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/trainer/model_presets/presets_distill.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/tuning/__init__.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon/tabular/tuning/feature_pruner.py +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon.tabular.egg-info/dependency_links.txt +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon.tabular.egg-info/namespace_packages.txt +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon.tabular.egg-info/top_level.txt +0 -0
- {autogluon.tabular-1.4.1b20250819 → autogluon.tabular-1.4.1b20250821}/src/autogluon.tabular.egg-info/zip-safe +0 -0
@@ -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,
|
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
|
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
|
436
|
-
|
437
|
-
|
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=
|
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 >= {
|
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 < {
|
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
|
-
|
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:
|
@@ -14,6 +14,7 @@ src/autogluon/tabular/configs/__init__.py
|
|
14
14
|
src/autogluon/tabular/configs/config_helper.py
|
15
15
|
src/autogluon/tabular/configs/feature_generator_presets.py
|
16
16
|
src/autogluon/tabular/configs/hyperparameter_configs.py
|
17
|
+
src/autogluon/tabular/configs/pipeline_presets.py
|
17
18
|
src/autogluon/tabular/configs/presets_configs.py
|
18
19
|
src/autogluon/tabular/configs/zeroshot/__init__.py
|
19
20
|
src/autogluon/tabular/configs/zeroshot/zeroshot_portfolio_2023.py
|
@@ -3,24 +3,24 @@ scipy<1.17,>=1.5.4
|
|
3
3
|
pandas<2.4.0,>=2.0.0
|
4
4
|
scikit-learn<1.8.0,>=1.4.0
|
5
5
|
networkx<4,>=3.0
|
6
|
-
autogluon.core==1.4.
|
7
|
-
autogluon.features==1.4.
|
6
|
+
autogluon.core==1.4.1b20250821
|
7
|
+
autogluon.features==1.4.1b20250821
|
8
8
|
|
9
9
|
[all]
|
10
|
-
|
11
|
-
huggingface_hub[torch]
|
12
|
-
einx
|
13
|
-
numpy<2.3.0,>=1.25
|
10
|
+
xgboost<3.1,>=2.0
|
14
11
|
catboost<1.3,>=1.2
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
numpy<2.3.0,>=1.25
|
13
|
+
transformers
|
14
|
+
omegaconf
|
18
15
|
loguru
|
19
|
-
lightgbm<4.7,>=4.0
|
20
16
|
spacy<3.9
|
21
|
-
|
17
|
+
autogluon.core[all]==1.4.1b20250821
|
18
|
+
torch<2.8,>=2.6
|
22
19
|
fastai<2.9,>=2.3.1
|
23
|
-
|
20
|
+
einx
|
21
|
+
huggingface_hub[torch]
|
22
|
+
einops<0.9,>=0.7
|
23
|
+
lightgbm<4.7,>=4.0
|
24
24
|
|
25
25
|
[all:platform_system == "Windows" and python_version == "3.9"]
|
26
26
|
blis<1.2.1,>=0.7.0
|
@@ -53,7 +53,7 @@ huggingface_hub[torch]
|
|
53
53
|
einops<0.9,>=0.7
|
54
54
|
|
55
55
|
[ray]
|
56
|
-
autogluon.core[all]==1.4.
|
56
|
+
autogluon.core[all]==1.4.1b20250821
|
57
57
|
|
58
58
|
[realmlp]
|
59
59
|
pytabkit<1.7,>=1.6
|
@@ -73,23 +73,23 @@ onnx<1.18.0,>=1.13.0
|
|
73
73
|
onnx<1.16.2,>=1.13.0
|
74
74
|
|
75
75
|
[tabarena]
|
76
|
+
xgboost<3.1,>=2.0
|
77
|
+
catboost<1.3,>=1.2
|
78
|
+
numpy<2.3.0,>=1.25
|
79
|
+
transformers
|
76
80
|
omegaconf
|
77
|
-
|
81
|
+
loguru
|
82
|
+
spacy<3.9
|
83
|
+
autogluon.core[all]==1.4.1b20250821
|
84
|
+
tabpfn<2.2,>=2.0.9
|
85
|
+
torch<2.8,>=2.6
|
86
|
+
fastai<2.9,>=2.3.1
|
78
87
|
einx
|
79
|
-
|
80
|
-
catboost<1.3,>=1.2
|
81
|
-
einops<0.9,>=0.7
|
82
|
-
autogluon.core[all]==1.4.1b20250819
|
88
|
+
huggingface_hub[torch]
|
83
89
|
tabicl<0.2,>=0.1.3
|
84
|
-
torch<2.8,>=2.6
|
85
|
-
tabpfn<2.2,>=2.0.9
|
86
90
|
pytabkit<1.7,>=1.6
|
87
|
-
|
91
|
+
einops<0.9,>=0.7
|
88
92
|
lightgbm<4.7,>=4.0
|
89
|
-
spacy<3.9
|
90
|
-
xgboost<3.1,>=2.0
|
91
|
-
fastai<2.9,>=2.3.1
|
92
|
-
transformers
|
93
93
|
|
94
94
|
[tabarena:platform_system == "Windows" and python_version == "3.9"]
|
95
95
|
blis<1.2.1,>=0.7.0
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|