autogluon.tabular 1.4.1b20251201__tar.gz → 1.4.1b20251217__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.1b20251201/src/autogluon.tabular.egg-info → autogluon_tabular-1.4.1b20251217}/PKG-INFO +38 -38
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/setup.py +10 -22
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/learner/default_learner.py +1 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/__init__.py +1 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/catboost/catboost_model.py +1 -1
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lgb/lgb_model.py +58 -8
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lgb/lgb_utils.py +2 -2
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/rf/rf_model.py +4 -4
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabm/tabm_model.py +2 -2
- autogluon_tabular-1.4.1b20251217/src/autogluon/tabular/models/tabprep/prep_lgb_model.py +21 -0
- autogluon_tabular-1.4.1b20251217/src/autogluon/tabular/models/tabprep/prep_mixin.py +220 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/torch/tabular_nn_torch.py +1 -2
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/predictor/predictor.py +2 -1
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/registry/_ag_model_registry.py +2 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/trainer/abstract_trainer.py +9 -3
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/trainer/auto_trainer.py +4 -0
- autogluon_tabular-1.4.1b20251217/src/autogluon/tabular/tuning/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/version.py +1 -1
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217/src/autogluon.tabular.egg-info}/PKG-INFO +38 -38
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon.tabular.egg-info/SOURCES.txt +3 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon.tabular.egg-info/requires.txt +41 -37
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/LICENSE +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/NOTICE +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/README.md +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/setup.cfg +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/configs/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/configs/config_helper.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/configs/feature_generator_presets.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/configs/hyperparameter_configs.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/configs/pipeline_presets.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/configs/presets_configs.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/configs/zeroshot/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/configs/zeroshot/zeroshot_portfolio_2023.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/configs/zeroshot/zeroshot_portfolio_2025.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/experimental/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/experimental/_scikit_mixin.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/experimental/_tabular_classifier.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/experimental/_tabular_regressor.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/experimental/plot_leaderboard.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/learner/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/learner/abstract_learner.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/_utils/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/_utils/rapids_utils.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/_utils/torch_utils.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/automm/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/automm/automm_model.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/automm/ft_transformer.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/catboost/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/catboost/callbacks.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/catboost/catboost_softclass_utils.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/catboost/catboost_utils.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/catboost/hyperparameters/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/catboost/hyperparameters/parameters.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/catboost/hyperparameters/searchspaces.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/ebm/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/ebm/ebm_model.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/ebm/hyperparameters/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/ebm/hyperparameters/parameters.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/ebm/hyperparameters/searchspaces.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fastainn/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fastainn/callbacks.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fastainn/fastai_helpers.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fastainn/hyperparameters/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fastainn/hyperparameters/parameters.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fastainn/hyperparameters/searchspaces.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fastainn/imports_helper.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fastainn/quantile_helpers.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fastainn/tabular_nn_fastai.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fasttext/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fasttext/fasttext_model.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fasttext/hyperparameters/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fasttext/hyperparameters/parameters.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/image_prediction/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/image_prediction/image_predictor.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/imodels/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/imodels/imodels_models.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/knn/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/knn/_knn_loo_variants.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/knn/knn_model.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/knn/knn_rapids_model.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/knn/knn_utils.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lgb/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lgb/callbacks.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lgb/hyperparameters/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lgb/hyperparameters/parameters.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lgb/hyperparameters/searchspaces.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lr/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lr/hyperparameters/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lr/hyperparameters/parameters.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lr/hyperparameters/searchspaces.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lr/lr_model.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lr/lr_preprocessing_utils.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lr/lr_rapids_model.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/config/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/config/config_pretrain.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/config/config_run.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/config/enums.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/core/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/core/callbacks.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/core/get_loss.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/core/get_optimizer.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/core/get_scheduler.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/core/prediction_metrics.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/core/trainer_finetune.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/data/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/data/collator.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/data/dataset_finetune.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/data/dataset_split.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/data/preprocessor.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/models/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/models/base.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/models/embedding.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/models/tab2d.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/utils/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/utils/set_seed.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/mitra_model.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/sklearn_interface.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/realmlp/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/realmlp/realmlp_model.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/rf/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/rf/compilers/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/rf/compilers/native.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/rf/compilers/onnx.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/rf/rf_quantile.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/rf/rf_rapids_model.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabicl/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabicl/tabicl_model.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabm/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabm/_tabm_internal.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabm/rtdl_num_embeddings.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabm/tabm_reference.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/config/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/config/config_run.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/callbacks.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/collator.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/dataset_split.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/enums.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/get_loss.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/get_optimizer.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/get_scheduler.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/trainer_finetune.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/y_transformer.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/data/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/data/dataset_finetune.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/data/preprocessor.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/models/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/models/foundation/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/models/foundation/embedding.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/models/foundation/foundation_transformer.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/results/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/results/prediction_metrics.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/tabpfnmix_classifier.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/tabpfnmix_regressor.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/tabpfnmix_model.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnv2/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnv2/rfpfn/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnv2/rfpfn/configs.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnv2/rfpfn/scoring_utils.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnv2/rfpfn/sklearn_based_decision_tree_tabpfn.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnv2/rfpfn/sklearn_based_random_forest_tabpfn.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnv2/rfpfn/sklearn_compat.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnv2/rfpfn/utils.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnv2/tabpfnv2_model.py +0 -0
- {autogluon_tabular-1.4.1b20251201/src/autogluon/tabular/models/tabular_nn → autogluon_tabular-1.4.1b20251217/src/autogluon/tabular/models/tabprep}/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201/src/autogluon/tabular/models/tabular_nn/compilers → autogluon_tabular-1.4.1b20251217/src/autogluon/tabular/models/tabular_nn}/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201/src/autogluon/tabular/models/tabular_nn/hyperparameters → autogluon_tabular-1.4.1b20251217/src/autogluon/tabular/models/tabular_nn/compilers}/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/compilers/native.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/compilers/onnx.py +0 -0
- {autogluon_tabular-1.4.1b20251201/src/autogluon/tabular/models/tabular_nn/torch → autogluon_tabular-1.4.1b20251217/src/autogluon/tabular/models/tabular_nn/hyperparameters}/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/hyperparameters/parameters.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/hyperparameters/searchspaces.py +0 -0
- {autogluon_tabular-1.4.1b20251201/src/autogluon/tabular/models/tabular_nn/utils → autogluon_tabular-1.4.1b20251217/src/autogluon/tabular/models/tabular_nn/torch}/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/torch/tabular_torch_dataset.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/torch/torch_network_modules.py +0 -0
- {autogluon_tabular-1.4.1b20251201/src/autogluon/tabular/models/text_prediction → autogluon_tabular-1.4.1b20251217/src/autogluon/tabular/models/tabular_nn/utils}/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/utils/categorical_encoders.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/utils/data_preprocessor.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/utils/nn_architecture_utils.py +0 -0
- {autogluon_tabular-1.4.1b20251201/src/autogluon/tabular/models/xgboost → autogluon_tabular-1.4.1b20251217/src/autogluon/tabular/models/text_prediction}/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/text_prediction/text_prediction_v1_model.py +0 -0
- {autogluon_tabular-1.4.1b20251201/src/autogluon/tabular/models/xgboost/hyperparameters → autogluon_tabular-1.4.1b20251217/src/autogluon/tabular/models/xgboost}/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/xgboost/callbacks.py +0 -0
- {autogluon_tabular-1.4.1b20251201/src/autogluon/tabular/models/xt → autogluon_tabular-1.4.1b20251217/src/autogluon/tabular/models/xgboost/hyperparameters}/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/xgboost/hyperparameters/parameters.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/xgboost/hyperparameters/searchspaces.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/xgboost/xgboost_model.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/xgboost/xgboost_utils.py +0 -0
- {autogluon_tabular-1.4.1b20251201/src/autogluon/tabular/trainer/model_presets → autogluon_tabular-1.4.1b20251217/src/autogluon/tabular/models/xt}/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/xt/xt_model.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/predictor/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/predictor/interpretable_predictor.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/registry/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/registry/_model_registry.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/testing/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/testing/fit_helper.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/testing/generate_datasets.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/testing/model_fit_helper.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/trainer/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201/src/autogluon/tabular/tuning → autogluon_tabular-1.4.1b20251217/src/autogluon/tabular/trainer/model_presets}/__init__.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/trainer/model_presets/presets.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/trainer/model_presets/presets_distill.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/tuning/feature_pruner.py +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon.tabular.egg-info/dependency_links.txt +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon.tabular.egg-info/namespace_packages.txt +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon.tabular.egg-info/top_level.txt +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon.tabular.egg-info/zip-safe +0 -0
- {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/tests/test_check_style.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: autogluon.tabular
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.1b20251217
|
|
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
|
|
@@ -40,8 +40,8 @@ Requires-Dist: scipy<1.17,>=1.5.4
|
|
|
40
40
|
Requires-Dist: pandas<2.4.0,>=2.0.0
|
|
41
41
|
Requires-Dist: scikit-learn<1.8.0,>=1.4.0
|
|
42
42
|
Requires-Dist: networkx<4,>=3.0
|
|
43
|
-
Requires-Dist: autogluon.core==1.4.
|
|
44
|
-
Requires-Dist: autogluon.features==1.4.
|
|
43
|
+
Requires-Dist: autogluon.core==1.4.1b20251217
|
|
44
|
+
Requires-Dist: autogluon.features==1.4.1b20251217
|
|
45
45
|
Provides-Extra: lightgbm
|
|
46
46
|
Requires-Dist: lightgbm<4.7,>=4.0; extra == "lightgbm"
|
|
47
47
|
Provides-Extra: catboost
|
|
@@ -55,86 +55,86 @@ Provides-Extra: interpret
|
|
|
55
55
|
Requires-Dist: interpret-core<0.8,>=0.7.2; extra == "interpret"
|
|
56
56
|
Provides-Extra: fastai
|
|
57
57
|
Requires-Dist: spacy<3.9; extra == "fastai"
|
|
58
|
-
Requires-Dist: torch<2.
|
|
58
|
+
Requires-Dist: torch<2.10,>=2.6; extra == "fastai"
|
|
59
59
|
Requires-Dist: fastai<2.9,>=2.3.1; extra == "fastai"
|
|
60
60
|
Provides-Extra: tabm
|
|
61
|
-
Requires-Dist: torch<2.
|
|
61
|
+
Requires-Dist: torch<2.10,>=2.6; extra == "tabm"
|
|
62
62
|
Provides-Extra: tabpfn
|
|
63
63
|
Requires-Dist: tabpfn<2.2,>=2.0.9; extra == "tabpfn"
|
|
64
64
|
Provides-Extra: tabpfnmix
|
|
65
|
-
Requires-Dist: torch<2.
|
|
65
|
+
Requires-Dist: torch<2.10,>=2.6; extra == "tabpfnmix"
|
|
66
66
|
Requires-Dist: huggingface_hub[torch]<1.0; extra == "tabpfnmix"
|
|
67
67
|
Requires-Dist: einops<0.9,>=0.7; extra == "tabpfnmix"
|
|
68
68
|
Provides-Extra: mitra
|
|
69
69
|
Requires-Dist: loguru; extra == "mitra"
|
|
70
70
|
Requires-Dist: einx; extra == "mitra"
|
|
71
71
|
Requires-Dist: omegaconf; extra == "mitra"
|
|
72
|
-
Requires-Dist: torch<2.
|
|
72
|
+
Requires-Dist: torch<2.10,>=2.6; extra == "mitra"
|
|
73
73
|
Requires-Dist: transformers; extra == "mitra"
|
|
74
74
|
Requires-Dist: huggingface_hub[torch]<1.0; extra == "mitra"
|
|
75
75
|
Requires-Dist: einops<0.9,>=0.7; extra == "mitra"
|
|
76
76
|
Provides-Extra: tabicl
|
|
77
77
|
Requires-Dist: tabicl<0.2,>=0.1.3; extra == "tabicl"
|
|
78
78
|
Provides-Extra: ray
|
|
79
|
-
Requires-Dist: autogluon.core[all]==1.4.
|
|
79
|
+
Requires-Dist: autogluon.core[all]==1.4.1b20251217; extra == "ray"
|
|
80
80
|
Provides-Extra: skex
|
|
81
81
|
Requires-Dist: scikit-learn-intelex<2025.5,>=2024.0; extra == "skex"
|
|
82
82
|
Provides-Extra: imodels
|
|
83
83
|
Requires-Dist: imodels<2.1.0,>=1.3.10; extra == "imodels"
|
|
84
84
|
Provides-Extra: skl2onnx
|
|
85
|
-
Requires-Dist:
|
|
86
|
-
Requires-Dist: onnx
|
|
87
|
-
Requires-Dist:
|
|
88
|
-
Requires-Dist: onnxruntime<1.
|
|
89
|
-
Requires-Dist: onnxruntime-gpu<1.
|
|
85
|
+
Requires-Dist: skl2onnx<1.20.0,>=1.15.0; extra == "skl2onnx"
|
|
86
|
+
Requires-Dist: onnx!=1.16.2,<1.21.0,>=1.13.0; platform_system == "Windows" and extra == "skl2onnx"
|
|
87
|
+
Requires-Dist: onnx<1.21.0,>=1.13.0; platform_system != "Windows" and extra == "skl2onnx"
|
|
88
|
+
Requires-Dist: onnxruntime<1.24.0,>=1.17.0; extra == "skl2onnx"
|
|
89
|
+
Requires-Dist: onnxruntime-gpu<1.24.0,>=1.17.0; (platform_system != "Darwin" and platform_machine != "aarch64") and extra == "skl2onnx"
|
|
90
90
|
Provides-Extra: all
|
|
91
|
+
Requires-Dist: autogluon.core[all]==1.4.1b20251217; extra == "all"
|
|
92
|
+
Requires-Dist: loguru; extra == "all"
|
|
91
93
|
Requires-Dist: spacy<3.9; extra == "all"
|
|
92
|
-
Requires-Dist:
|
|
94
|
+
Requires-Dist: huggingface_hub[torch]<1.0; extra == "all"
|
|
93
95
|
Requires-Dist: einx; extra == "all"
|
|
94
|
-
Requires-Dist:
|
|
95
|
-
Requires-Dist: transformers; extra == "all"
|
|
96
|
-
Requires-Dist: autogluon.core[all]==1.4.1b20251201; extra == "all"
|
|
96
|
+
Requires-Dist: fastai<2.9,>=2.3.1; extra == "all"
|
|
97
97
|
Requires-Dist: xgboost<3.1,>=2.0; extra == "all"
|
|
98
|
+
Requires-Dist: torch<2.10,>=2.6; extra == "all"
|
|
99
|
+
Requires-Dist: numpy<2.3.0,>=1.25; extra == "all"
|
|
98
100
|
Requires-Dist: einops<0.9,>=0.7; extra == "all"
|
|
101
|
+
Requires-Dist: lightgbm<4.7,>=4.0; extra == "all"
|
|
99
102
|
Requires-Dist: omegaconf; extra == "all"
|
|
100
|
-
Requires-Dist: huggingface_hub[torch]<1.0; extra == "all"
|
|
101
103
|
Requires-Dist: catboost<1.3,>=1.2; extra == "all"
|
|
102
|
-
Requires-Dist:
|
|
103
|
-
Requires-Dist: numpy<2.3.0,>=1.25; extra == "all"
|
|
104
|
-
Requires-Dist: lightgbm<4.7,>=4.0; extra == "all"
|
|
104
|
+
Requires-Dist: transformers; extra == "all"
|
|
105
105
|
Provides-Extra: tabarena
|
|
106
|
-
Requires-Dist:
|
|
107
|
-
Requires-Dist:
|
|
108
|
-
Requires-Dist:
|
|
106
|
+
Requires-Dist: catboost<1.3,>=1.2; extra == "tabarena"
|
|
107
|
+
Requires-Dist: autogluon.core[all]==1.4.1b20251217; extra == "tabarena"
|
|
108
|
+
Requires-Dist: tabicl<0.2,>=0.1.3; extra == "tabarena"
|
|
109
109
|
Requires-Dist: loguru; extra == "tabarena"
|
|
110
|
-
Requires-Dist:
|
|
110
|
+
Requires-Dist: huggingface_hub[torch]<1.0; extra == "tabarena"
|
|
111
|
+
Requires-Dist: einx; extra == "tabarena"
|
|
111
112
|
Requires-Dist: pytabkit<1.7,>=1.6; extra == "tabarena"
|
|
113
|
+
Requires-Dist: fastai<2.9,>=2.3.1; extra == "tabarena"
|
|
112
114
|
Requires-Dist: xgboost<3.1,>=2.0; extra == "tabarena"
|
|
115
|
+
Requires-Dist: torch<2.10,>=2.6; extra == "tabarena"
|
|
116
|
+
Requires-Dist: numpy<2.3.0,>=1.25; extra == "tabarena"
|
|
113
117
|
Requires-Dist: einops<0.9,>=0.7; extra == "tabarena"
|
|
114
118
|
Requires-Dist: lightgbm<4.7,>=4.0; extra == "tabarena"
|
|
115
|
-
Requires-Dist: interpret-core<0.8,>=0.7.2; extra == "tabarena"
|
|
116
119
|
Requires-Dist: omegaconf; extra == "tabarena"
|
|
117
|
-
Requires-Dist:
|
|
118
|
-
Requires-Dist:
|
|
119
|
-
Requires-Dist: tabicl<0.2,>=0.1.3; extra == "tabarena"
|
|
120
|
-
Requires-Dist: torch<2.8,>=2.6; extra == "tabarena"
|
|
120
|
+
Requires-Dist: spacy<3.9; extra == "tabarena"
|
|
121
|
+
Requires-Dist: transformers; extra == "tabarena"
|
|
121
122
|
Requires-Dist: tabpfn<2.2,>=2.0.9; extra == "tabarena"
|
|
122
|
-
Requires-Dist:
|
|
123
|
-
Requires-Dist: fastai<2.9,>=2.3.1; extra == "tabarena"
|
|
123
|
+
Requires-Dist: interpret-core<0.8,>=0.7.2; extra == "tabarena"
|
|
124
124
|
Provides-Extra: tests
|
|
125
125
|
Requires-Dist: interpret-core<0.8,>=0.7.2; extra == "tests"
|
|
126
126
|
Requires-Dist: tabicl<0.2,>=0.1.3; extra == "tests"
|
|
127
127
|
Requires-Dist: tabpfn<2.2,>=2.0.9; extra == "tests"
|
|
128
128
|
Requires-Dist: pytabkit<1.7,>=1.6; extra == "tests"
|
|
129
|
-
Requires-Dist: torch<2.
|
|
129
|
+
Requires-Dist: torch<2.10,>=2.6; extra == "tests"
|
|
130
130
|
Requires-Dist: huggingface_hub[torch]<1.0; extra == "tests"
|
|
131
131
|
Requires-Dist: einops<0.9,>=0.7; extra == "tests"
|
|
132
132
|
Requires-Dist: imodels<2.1.0,>=1.3.10; extra == "tests"
|
|
133
|
-
Requires-Dist:
|
|
134
|
-
Requires-Dist: onnx
|
|
135
|
-
Requires-Dist:
|
|
136
|
-
Requires-Dist: onnxruntime<1.
|
|
137
|
-
Requires-Dist: onnxruntime-gpu<1.
|
|
133
|
+
Requires-Dist: skl2onnx<1.20.0,>=1.15.0; extra == "tests"
|
|
134
|
+
Requires-Dist: onnx!=1.16.2,<1.21.0,>=1.13.0; platform_system == "Windows" and extra == "tests"
|
|
135
|
+
Requires-Dist: onnx<1.21.0,>=1.13.0; platform_system != "Windows" and extra == "tests"
|
|
136
|
+
Requires-Dist: onnxruntime<1.24.0,>=1.17.0; extra == "tests"
|
|
137
|
+
Requires-Dist: onnxruntime-gpu<1.24.0,>=1.17.0; (platform_system != "Darwin" and platform_machine != "aarch64") and extra == "tests"
|
|
138
138
|
Dynamic: author
|
|
139
139
|
Dynamic: classifier
|
|
140
140
|
Dynamic: description
|
|
@@ -92,28 +92,16 @@ extras_require = {
|
|
|
92
92
|
],
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
# Therefore, we install onnxruntime explicitly here just for macOS.
|
|
106
|
-
"onnxruntime>=1.17.0,<1.20.0",
|
|
107
|
-
]
|
|
108
|
-
else:
|
|
109
|
-
# For other platforms, include both CPU and GPU versions
|
|
110
|
-
extras_require["skl2onnx"] = [
|
|
111
|
-
"onnx>=1.13.0,<1.16.2;platform_system=='Windows'", # cap at 1.16.1 for issue https://github.com/onnx/onnx/issues/6267
|
|
112
|
-
"onnx>=1.13.0,<1.18.0;platform_system!='Windows'",
|
|
113
|
-
"skl2onnx>=1.15.0,<1.18.0",
|
|
114
|
-
"onnxruntime>=1.17.0,<1.20.0", # install for gpu system due to https://github.com/autogluon/autogluon/issues/3804
|
|
115
|
-
"onnxruntime-gpu>=1.17.0,<1.20.0",
|
|
116
|
-
]
|
|
95
|
+
extras_require["skl2onnx"] = [
|
|
96
|
+
"skl2onnx>=1.15.0,<1.20.0",
|
|
97
|
+
# Sync ONNX requirements with multimodal/setup.py
|
|
98
|
+
"onnx>=1.13.0,!=1.16.2,<1.21.0;platform_system=='Windows'", # exclude 1.16.2 for issue https://github.com/onnx/onnx/issues/6267
|
|
99
|
+
"onnx>=1.13.0,<1.21.0;platform_system!='Windows'",
|
|
100
|
+
# For macOS, there isn't a onnxruntime-gpu package installed with skl2onnx.
|
|
101
|
+
# Therefore, we install onnxruntime explicitly here just for macOS.
|
|
102
|
+
"onnxruntime>=1.17.0,<1.24.0",
|
|
103
|
+
"onnxruntime-gpu>=1.17.0,<1.24.0; platform_system != 'Darwin' and platform_machine != 'aarch64'",
|
|
104
|
+
]
|
|
117
105
|
|
|
118
106
|
# TODO: v1.0: Rename `all` to `core`, make `all` contain everything.
|
|
119
107
|
all_requires = []
|
|
@@ -143,6 +143,7 @@ class DefaultLearner(AbstractTabularLearner):
|
|
|
143
143
|
infer_limit=infer_limit,
|
|
144
144
|
infer_limit_batch_size=infer_limit_batch_size,
|
|
145
145
|
groups=groups,
|
|
146
|
+
label_cleaner=copy.deepcopy(self.label_cleaner),
|
|
146
147
|
**trainer_fit_kwargs,
|
|
147
148
|
)
|
|
148
149
|
self.save_trainer(trainer=trainer)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from autogluon.core.models.abstract.abstract_model import AbstractModel
|
|
2
2
|
|
|
3
|
+
from .tabprep.prep_lgb_model import PrepLGBModel
|
|
3
4
|
from .automm.automm_model import MultiModalPredictorModel
|
|
4
5
|
from .automm.ft_transformer import FTTransformerModel
|
|
5
6
|
from .catboost.catboost_model import CatBoostModel
|
|
@@ -146,7 +146,7 @@ class CatBoostModel(AbstractModel):
|
|
|
146
146
|
num_cols_train = len(X.columns)
|
|
147
147
|
num_classes = self.num_classes if self.num_classes else 1 # self.num_classes could be None after initialization if it's a regression problem
|
|
148
148
|
|
|
149
|
-
X = self.preprocess(X)
|
|
149
|
+
X = self.preprocess(X, y=y, is_train=True)
|
|
150
150
|
cat_features = list(X.select_dtypes(include="category").columns)
|
|
151
151
|
X = Pool(data=X, label=y, cat_features=cat_features, weight=sample_weight)
|
|
152
152
|
|
|
@@ -103,10 +103,46 @@ class LGBModel(AbstractModel):
|
|
|
103
103
|
Scales linearly with the number of estimators, number of classes, and number of leaves.
|
|
104
104
|
Memory usage peaks during model saving, with the peak consuming approximately 2-4x the size of the model in memory.
|
|
105
105
|
"""
|
|
106
|
+
data_mem_usage = get_approximate_df_mem_usage(X).sum()
|
|
107
|
+
return cls._estimate_memory_usage_common(
|
|
108
|
+
num_features=X.shape[1],
|
|
109
|
+
data_mem_usage=data_mem_usage,
|
|
110
|
+
hyperparameters=hyperparameters,
|
|
111
|
+
num_classes=num_classes,
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
@classmethod
|
|
115
|
+
def _estimate_memory_usage_static_lite(
|
|
116
|
+
cls,
|
|
117
|
+
num_samples: int,
|
|
118
|
+
num_features: int,
|
|
119
|
+
num_bytes_per_cell: float = 4,
|
|
120
|
+
hyperparameters: dict = None,
|
|
121
|
+
num_classes: int = 1,
|
|
122
|
+
**kwargs,
|
|
123
|
+
) -> int:
|
|
124
|
+
data_mem_usage = num_samples * num_features * num_bytes_per_cell
|
|
125
|
+
return cls._estimate_memory_usage_common(
|
|
126
|
+
num_features=num_features,
|
|
127
|
+
data_mem_usage=data_mem_usage,
|
|
128
|
+
hyperparameters=hyperparameters,
|
|
129
|
+
num_classes=num_classes,
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
@classmethod
|
|
133
|
+
def _estimate_memory_usage_common(
|
|
134
|
+
cls,
|
|
135
|
+
num_features: int,
|
|
136
|
+
data_mem_usage: int | float,
|
|
137
|
+
hyperparameters: dict | None = None,
|
|
138
|
+
num_classes: int = 1,
|
|
139
|
+
) -> int:
|
|
140
|
+
"""
|
|
141
|
+
Utility method to avoid code duplication
|
|
142
|
+
"""
|
|
106
143
|
if hyperparameters is None:
|
|
107
144
|
hyperparameters = {}
|
|
108
145
|
num_classes = num_classes if num_classes else 1 # num_classes could be None after initialization if it's a regression problem
|
|
109
|
-
data_mem_usage = get_approximate_df_mem_usage(X).sum()
|
|
110
146
|
data_mem_usage_bytes = data_mem_usage * 5 + data_mem_usage / 4 * num_classes # TODO: Extremely crude approximation, can be vastly improved
|
|
111
147
|
|
|
112
148
|
n_trees_per_estimator = num_classes if num_classes > 2 else 1
|
|
@@ -114,7 +150,7 @@ class LGBModel(AbstractModel):
|
|
|
114
150
|
max_bins = hyperparameters.get("max_bins", 255)
|
|
115
151
|
num_leaves = hyperparameters.get("num_leaves", 31)
|
|
116
152
|
# Memory usage of histogram based on https://github.com/microsoft/LightGBM/issues/562#issuecomment-304524592
|
|
117
|
-
histogram_mem_usage_bytes = 20 * max_bins *
|
|
153
|
+
histogram_mem_usage_bytes = 20 * max_bins * num_features * num_leaves
|
|
118
154
|
histogram_mem_usage_bytes_max = hyperparameters.get("histogram_pool_size", None)
|
|
119
155
|
if histogram_mem_usage_bytes_max is not None:
|
|
120
156
|
histogram_mem_usage_bytes_max *= 1e6 # Convert megabytes to bytes, `histogram_pool_size` is in MB.
|
|
@@ -124,11 +160,11 @@ class LGBModel(AbstractModel):
|
|
|
124
160
|
|
|
125
161
|
mem_size_per_estimator = n_trees_per_estimator * num_leaves * 100 # very rough estimate
|
|
126
162
|
n_estimators = hyperparameters.get("num_boost_round", DEFAULT_NUM_BOOST_ROUND)
|
|
127
|
-
n_estimators_min = min(n_estimators,
|
|
128
|
-
mem_size_estimators = n_estimators_min * mem_size_per_estimator # memory estimate after fitting up to
|
|
163
|
+
n_estimators_min = min(n_estimators, 5000)
|
|
164
|
+
mem_size_estimators = n_estimators_min * mem_size_per_estimator # memory estimate after fitting up to 5000 estimators
|
|
129
165
|
|
|
130
166
|
approx_mem_size_req = data_mem_usage_bytes + histogram_mem_usage_bytes + mem_size_estimators
|
|
131
|
-
return approx_mem_size_req
|
|
167
|
+
return int(approx_mem_size_req)
|
|
132
168
|
|
|
133
169
|
def _fit(self, X, y, X_val=None, y_val=None, time_limit=None, num_gpus=0, num_cpus=0, sample_weight=None, sample_weight_val=None, verbosity=2, **kwargs):
|
|
134
170
|
try_import_lightgbm() # raise helpful error message if LightGBM isn't installed
|
|
@@ -371,6 +407,9 @@ class LGBModel(AbstractModel):
|
|
|
371
407
|
X = self.preprocess(X, **kwargs)
|
|
372
408
|
|
|
373
409
|
y_pred_proba = self.model.predict(X, num_threads=num_cpus)
|
|
410
|
+
return self._post_process_predictions(y_pred_proba=y_pred_proba)
|
|
411
|
+
|
|
412
|
+
def _post_process_predictions(self, y_pred_proba) -> np.ndarray:
|
|
374
413
|
if self.problem_type == QUANTILE:
|
|
375
414
|
# y_pred_proba is a pd.DataFrame, need to convert
|
|
376
415
|
y_pred_proba = y_pred_proba.to_numpy()
|
|
@@ -423,7 +462,7 @@ class LGBModel(AbstractModel):
|
|
|
423
462
|
self,
|
|
424
463
|
X: DataFrame,
|
|
425
464
|
y: Series,
|
|
426
|
-
params,
|
|
465
|
+
params: dict,
|
|
427
466
|
X_val=None,
|
|
428
467
|
y_val=None,
|
|
429
468
|
X_test=None,
|
|
@@ -432,11 +471,14 @@ class LGBModel(AbstractModel):
|
|
|
432
471
|
sample_weight_val=None,
|
|
433
472
|
sample_weight_test=None,
|
|
434
473
|
save=False,
|
|
474
|
+
init_train=None,
|
|
475
|
+
init_val=None,
|
|
476
|
+
init_test=None,
|
|
435
477
|
):
|
|
436
478
|
lgb_dataset_params_keys = ["two_round"] # Keys that are specific to lightGBM Dataset object construction.
|
|
437
479
|
data_params = {key: params[key] for key in lgb_dataset_params_keys if key in params}.copy()
|
|
438
480
|
|
|
439
|
-
X = self.preprocess(X, is_train=True)
|
|
481
|
+
X = self.preprocess(X, y=y, is_train=True)
|
|
440
482
|
if X_val is not None:
|
|
441
483
|
X_val = self.preprocess(X_val)
|
|
442
484
|
if X_test is not None:
|
|
@@ -458,7 +500,13 @@ class LGBModel(AbstractModel):
|
|
|
458
500
|
|
|
459
501
|
# X, W_train = self.convert_to_weight(X=X)
|
|
460
502
|
dataset_train = construct_dataset(
|
|
461
|
-
x=X,
|
|
503
|
+
x=X,
|
|
504
|
+
y=y,
|
|
505
|
+
location=os.path.join("self.path", "datasets", "train"),
|
|
506
|
+
params=data_params,
|
|
507
|
+
save=save,
|
|
508
|
+
weight=sample_weight,
|
|
509
|
+
init_score=init_train,
|
|
462
510
|
)
|
|
463
511
|
# dataset_train = construct_dataset_lowest_memory(X=X, y=y, location=self.path + 'datasets/train', params=data_params)
|
|
464
512
|
if X_val is not None:
|
|
@@ -471,6 +519,7 @@ class LGBModel(AbstractModel):
|
|
|
471
519
|
params=data_params,
|
|
472
520
|
save=save,
|
|
473
521
|
weight=sample_weight_val,
|
|
522
|
+
init_score=init_val,
|
|
474
523
|
)
|
|
475
524
|
# dataset_val = construct_dataset_lowest_memory(X=X_val, y=y_val, location=self.path + 'datasets/val', reference=dataset_train, params=data_params)
|
|
476
525
|
else:
|
|
@@ -485,6 +534,7 @@ class LGBModel(AbstractModel):
|
|
|
485
534
|
params=data_params,
|
|
486
535
|
save=save,
|
|
487
536
|
weight=sample_weight_test,
|
|
537
|
+
init_score=init_test,
|
|
488
538
|
)
|
|
489
539
|
else:
|
|
490
540
|
dataset_test = None
|
|
@@ -104,11 +104,11 @@ def softclass_lgbobj(preds, train_data):
|
|
|
104
104
|
return grad.flatten("F"), hess.flatten("F")
|
|
105
105
|
|
|
106
106
|
|
|
107
|
-
def construct_dataset(x: DataFrame, y: Series, location=None, reference=None, params=None, save=False, weight=None):
|
|
107
|
+
def construct_dataset(x: DataFrame, y: Series, location=None, reference=None, params=None, save=False, weight=None, init_score=None):
|
|
108
108
|
try_import_lightgbm()
|
|
109
109
|
import lightgbm as lgb
|
|
110
110
|
|
|
111
|
-
dataset = lgb.Dataset(data=x, label=y, reference=reference, free_raw_data=True, params=params, weight=weight)
|
|
111
|
+
dataset = lgb.Dataset(data=x, label=y, reference=reference, free_raw_data=True, params=params, weight=weight, init_score=init_score)
|
|
112
112
|
|
|
113
113
|
if save:
|
|
114
114
|
assert location is not None
|
|
@@ -151,13 +151,13 @@ class RFModel(AbstractModel):
|
|
|
151
151
|
hyperparameters = {}
|
|
152
152
|
n_estimators_final = hyperparameters.get("n_estimators", 300)
|
|
153
153
|
if isinstance(n_estimators_final, int):
|
|
154
|
-
|
|
154
|
+
n_estimators = n_estimators_final
|
|
155
155
|
else: # if search space
|
|
156
|
-
|
|
156
|
+
n_estimators = 40
|
|
157
157
|
num_trees_per_estimator = cls._get_num_trees_per_estimator_static(problem_type=problem_type, num_classes=num_classes)
|
|
158
158
|
bytes_per_estimator = num_trees_per_estimator * len(X) / 60000 * 1e6 # Underestimates by 3x on ExtraTrees
|
|
159
|
-
|
|
160
|
-
return
|
|
159
|
+
expected_memory_usage = int(bytes_per_estimator * n_estimators)
|
|
160
|
+
return expected_memory_usage
|
|
161
161
|
|
|
162
162
|
def _validate_fit_memory_usage(self, mem_error_threshold: float = 0.5, mem_warning_threshold: float = 0.4, mem_size_threshold: int = 1e7, **kwargs):
|
|
163
163
|
return super()._validate_fit_memory_usage(
|
|
@@ -88,7 +88,7 @@ class TabMModel(AbstractModel):
|
|
|
88
88
|
if X_val is None:
|
|
89
89
|
from autogluon.core.utils import generate_train_test_split
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
X, X_val, y, y_val = generate_train_test_split(
|
|
92
92
|
X=X,
|
|
93
93
|
y=y,
|
|
94
94
|
problem_type=self.problem_type,
|
|
@@ -99,7 +99,7 @@ class TabMModel(AbstractModel):
|
|
|
99
99
|
hyp = self._get_model_params()
|
|
100
100
|
bool_to_cat = hyp.pop("bool_to_cat", True)
|
|
101
101
|
|
|
102
|
-
X = self.preprocess(X, is_train=True, bool_to_cat=bool_to_cat)
|
|
102
|
+
X = self.preprocess(X, y=y, is_train=True, bool_to_cat=bool_to_cat)
|
|
103
103
|
if X_val is not None:
|
|
104
104
|
X_val = self.preprocess(X_val)
|
|
105
105
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from ..lgb.lgb_model import LGBModel
|
|
4
|
+
from .prep_mixin import ModelAgnosticPrepMixin
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class PrepLGBModel(ModelAgnosticPrepMixin, LGBModel):
|
|
8
|
+
ag_key = "GBM_PREP"
|
|
9
|
+
ag_name = "LightGBMPrep"
|
|
10
|
+
|
|
11
|
+
@classmethod
|
|
12
|
+
def _estimate_memory_usage_static(cls, **kwargs) -> int:
|
|
13
|
+
memory_usage = super()._estimate_memory_usage_static(**kwargs)
|
|
14
|
+
# FIXME: 1.5 runs OOM on kddcup09_appetency fold 2 repeat 0 prep_LightGBM_r49_BAG_L1
|
|
15
|
+
return memory_usage * 2.0 # FIXME: For some reason this underestimates mem usage without this
|
|
16
|
+
|
|
17
|
+
@classmethod
|
|
18
|
+
def _estimate_memory_usage_static_lite(cls, **kwargs) -> int:
|
|
19
|
+
memory_usage = super()._estimate_memory_usage_static_lite(**kwargs)
|
|
20
|
+
# FIXME: 1.5 runs OOM on kddcup09_appetency fold 2 repeat 0 prep_LightGBM_r49_BAG_L1
|
|
21
|
+
return memory_usage * 2.0 # FIXME: For some reason this underestimates mem usage without this
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
from typing import Type
|
|
5
|
+
|
|
6
|
+
import numpy as np
|
|
7
|
+
import pandas as pd
|
|
8
|
+
|
|
9
|
+
from autogluon.features import ArithmeticFeatureGenerator
|
|
10
|
+
from autogluon.features import CategoricalInteractionFeatureGenerator
|
|
11
|
+
from autogluon.features import OOFTargetEncodingFeatureGenerator
|
|
12
|
+
from autogluon.features import BulkFeatureGenerator
|
|
13
|
+
from autogluon.features.generators.abstract import AbstractFeatureGenerator
|
|
14
|
+
|
|
15
|
+
logger = logging.getLogger(__name__)
|
|
16
|
+
|
|
17
|
+
# TODO: In future we can have a feature generator registry like what is done for models
|
|
18
|
+
_feature_generator_class_lst = [
|
|
19
|
+
ArithmeticFeatureGenerator,
|
|
20
|
+
CategoricalInteractionFeatureGenerator,
|
|
21
|
+
OOFTargetEncodingFeatureGenerator,
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
_feature_generator_class_map = {
|
|
25
|
+
feature_generator_cls.__name__: feature_generator_cls for feature_generator_cls in _feature_generator_class_lst
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _recursive_expand_prep_param(prep_param: tuple | list[list | tuple]) -> list[tuple]:
|
|
30
|
+
if isinstance(prep_param, list):
|
|
31
|
+
if len(prep_param) == 0:
|
|
32
|
+
param_type = "list"
|
|
33
|
+
elif len(prep_param) == 2:
|
|
34
|
+
if isinstance(prep_param[0], (str, AbstractFeatureGenerator)):
|
|
35
|
+
param_type = "generator"
|
|
36
|
+
else:
|
|
37
|
+
param_type = "list"
|
|
38
|
+
else:
|
|
39
|
+
param_type = "list"
|
|
40
|
+
elif isinstance(prep_param, tuple):
|
|
41
|
+
param_type = "generator"
|
|
42
|
+
else:
|
|
43
|
+
raise ValueError(f"Invalid value for prep_param: {prep_param}")
|
|
44
|
+
if param_type == "list":
|
|
45
|
+
out = []
|
|
46
|
+
for p in prep_param:
|
|
47
|
+
out += _recursive_expand_prep_param(p)
|
|
48
|
+
return out
|
|
49
|
+
elif param_type == "generator":
|
|
50
|
+
return [prep_param]
|
|
51
|
+
else:
|
|
52
|
+
raise ValueError(f"Invalid value for prep_param: {prep_param}")
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
# FIXME: Why is preprocessing twice as slow per fold when bagging LightGBM??? Need to investigate. Try sequential fold fit
|
|
56
|
+
# TODO: Why is `prep_params` a dict instead of a list?
|
|
57
|
+
class ModelAgnosticPrepMixin:
|
|
58
|
+
def _estimate_dtypes_after_preprocessing(self, X: pd.DataFrame, **kwargs) -> int:
|
|
59
|
+
prep_params = self._get_ag_params().get("prep_params", None)
|
|
60
|
+
if prep_params is None:
|
|
61
|
+
prep_params = []
|
|
62
|
+
|
|
63
|
+
# FIXME: Temporarily simplify for memory calculation
|
|
64
|
+
prep_params = _recursive_expand_prep_param(prep_params)
|
|
65
|
+
|
|
66
|
+
X_nunique = X.nunique().values
|
|
67
|
+
n_categorical = X.select_dtypes(exclude=[np.number]).shape[1]
|
|
68
|
+
n_numeric = X.loc[:, X_nunique > 2].select_dtypes(include=[np.number]).shape[1]
|
|
69
|
+
n_binary = X.loc[:, X_nunique <= 2].select_dtypes(include=[np.number]).shape[
|
|
70
|
+
1] # NOTE: It can happen that features have less than two unique values if cleaning is applied before the bagging, i.e. Bioresponse
|
|
71
|
+
|
|
72
|
+
assert n_numeric + n_categorical + n_binary == X.shape[1] # NOTE: FOr debugging, to be removed later
|
|
73
|
+
for preprocessor_cls_name, init_params in prep_params:
|
|
74
|
+
if preprocessor_cls_name == 'ArithmeticFeatureGenerator':
|
|
75
|
+
prep_cls = ArithmeticFeatureGenerator(target_type=self.problem_type, **init_params)
|
|
76
|
+
elif preprocessor_cls_name == 'CategoricalInteractionFeatureGenerator':
|
|
77
|
+
prep_cls = CategoricalInteractionFeatureGenerator(target_type=self.problem_type, **init_params)
|
|
78
|
+
elif preprocessor_cls_name == 'OOFTargetEncodingFeatureGenerator':
|
|
79
|
+
prep_cls = OOFTargetEncodingFeatureGenerator(target_type=self.problem_type, **init_params)
|
|
80
|
+
else:
|
|
81
|
+
raise ValueError(f"Unknown preprocessor class name: {preprocessor_cls_name}")
|
|
82
|
+
n_numeric, n_categorical, n_binary = prep_cls.estimate_new_dtypes(n_numeric, n_categorical, n_binary,
|
|
83
|
+
num_classes=self.num_classes)
|
|
84
|
+
|
|
85
|
+
return n_numeric, n_categorical, n_binary
|
|
86
|
+
|
|
87
|
+
def _estimate_memory_usage(self, X: pd.DataFrame, **kwargs) -> int:
|
|
88
|
+
hyperparameters = self._get_model_params()
|
|
89
|
+
n_numeric, n_categorical, n_binary = self._estimate_dtypes_after_preprocessing(X=X, **kwargs)
|
|
90
|
+
|
|
91
|
+
if hasattr(self, "_estimate_memory_usage_static_lite"):
|
|
92
|
+
return self._estimate_memory_usage_static_lite(
|
|
93
|
+
num_samples=X.shape[0],
|
|
94
|
+
num_features=n_numeric + n_categorical + n_binary,
|
|
95
|
+
num_bytes_per_cell=4,
|
|
96
|
+
hyperparameters=hyperparameters,
|
|
97
|
+
problem_type=self.problem_type,
|
|
98
|
+
num_classes=self.num_classes,
|
|
99
|
+
**kwargs,
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
# TODO: Replace with memory estimation logic based on no. of features instead of dataframe generation
|
|
103
|
+
shape = X.shape[0]
|
|
104
|
+
df_lst = []
|
|
105
|
+
if n_numeric > 0:
|
|
106
|
+
X_estimate = np.random.random(size=[shape, n_numeric]).astype(np.float32)
|
|
107
|
+
X_estimate_numeric = pd.DataFrame(X_estimate)
|
|
108
|
+
df_lst.append(X_estimate_numeric)
|
|
109
|
+
if n_categorical > 0:
|
|
110
|
+
cardinality = int(X.select_dtypes(exclude=[np.number]).nunique().mean())
|
|
111
|
+
X_estimate = np.random.randint(0, cardinality, [shape, n_categorical]).astype('str')
|
|
112
|
+
X_estimate_cat = pd.DataFrame(X_estimate)
|
|
113
|
+
df_lst.append(X_estimate_cat)
|
|
114
|
+
if n_binary > 0:
|
|
115
|
+
X_estimate = np.random.randint(0, 2, [shape, n_binary]).astype(np.int8)
|
|
116
|
+
X_estimate_binary = pd.DataFrame(X_estimate)
|
|
117
|
+
df_lst.append(X_estimate_binary)
|
|
118
|
+
X = pd.concat(df_lst, ignore_index=True, axis=1)
|
|
119
|
+
|
|
120
|
+
return self.estimate_memory_usage_static(
|
|
121
|
+
X=X,
|
|
122
|
+
problem_type=self.problem_type,
|
|
123
|
+
num_classes=self.num_classes,
|
|
124
|
+
hyperparameters=hyperparameters,
|
|
125
|
+
**kwargs,
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
def _init_preprocessor(
|
|
129
|
+
self,
|
|
130
|
+
preprocessor_cls: Type[AbstractFeatureGenerator] | str,
|
|
131
|
+
init_params: dict | None,
|
|
132
|
+
) -> AbstractFeatureGenerator:
|
|
133
|
+
if isinstance(preprocessor_cls, str):
|
|
134
|
+
preprocessor_cls = _feature_generator_class_map[preprocessor_cls]
|
|
135
|
+
if init_params is None:
|
|
136
|
+
init_params = {}
|
|
137
|
+
_init_params = dict(
|
|
138
|
+
verbosity=0,
|
|
139
|
+
random_state=self.random_seed, # FIXME: Not a generic param
|
|
140
|
+
target_type=self.problem_type, # FIXME: Not a generic param
|
|
141
|
+
)
|
|
142
|
+
_init_params.update(**init_params)
|
|
143
|
+
return preprocessor_cls(
|
|
144
|
+
**_init_params,
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
def _recursive_init_preprocessors(self, prep_param: tuple | list[list | tuple]):
|
|
148
|
+
if isinstance(prep_param, list):
|
|
149
|
+
if len(prep_param) == 0:
|
|
150
|
+
param_type = "list"
|
|
151
|
+
elif len(prep_param) == 2:
|
|
152
|
+
if isinstance(prep_param[0], (str, AbstractFeatureGenerator)):
|
|
153
|
+
param_type = "generator"
|
|
154
|
+
else:
|
|
155
|
+
param_type = "list"
|
|
156
|
+
else:
|
|
157
|
+
param_type = "list"
|
|
158
|
+
elif isinstance(prep_param, tuple):
|
|
159
|
+
param_type = "generator"
|
|
160
|
+
else:
|
|
161
|
+
raise ValueError(f"Invalid value for prep_param: {prep_param}")
|
|
162
|
+
|
|
163
|
+
if param_type == "list":
|
|
164
|
+
out = []
|
|
165
|
+
for i, p in enumerate(prep_param):
|
|
166
|
+
out.append(self._recursive_init_preprocessors(p))
|
|
167
|
+
return out
|
|
168
|
+
elif param_type == "generator":
|
|
169
|
+
assert len(prep_param) == 2
|
|
170
|
+
preprocessor_cls = prep_param[0]
|
|
171
|
+
init_params = prep_param[1]
|
|
172
|
+
return self._init_preprocessor(preprocessor_cls=preprocessor_cls, init_params=init_params)
|
|
173
|
+
else:
|
|
174
|
+
raise ValueError(f"Invalid value for prep_param: {prep_param}")
|
|
175
|
+
|
|
176
|
+
def get_preprocessors(self) -> list[AbstractFeatureGenerator]:
|
|
177
|
+
ag_params = self._get_ag_params()
|
|
178
|
+
prep_params = ag_params.get("prep_params", None)
|
|
179
|
+
passthrough_types = ag_params.get("prep_params.passthrough_types", None)
|
|
180
|
+
if prep_params is None:
|
|
181
|
+
return []
|
|
182
|
+
if not prep_params:
|
|
183
|
+
return []
|
|
184
|
+
|
|
185
|
+
preprocessors = self._recursive_init_preprocessors(prep_param=prep_params)
|
|
186
|
+
if len(preprocessors) == 0:
|
|
187
|
+
return []
|
|
188
|
+
if len(preprocessors) == 1 and isinstance(preprocessors[0], AbstractFeatureGenerator):
|
|
189
|
+
return preprocessors
|
|
190
|
+
else:
|
|
191
|
+
preprocessors = [BulkFeatureGenerator(
|
|
192
|
+
generators=preprocessors,
|
|
193
|
+
# TODO: "false_recursive" technically can slow down inference, but need to optimize `True` first
|
|
194
|
+
# Refer to `Bioresponse` dataset where setting to `True` -> 200s fit time vs `false_recursive` -> 1s fit time
|
|
195
|
+
remove_unused_features="false_recursive",
|
|
196
|
+
post_drop_duplicates=True,
|
|
197
|
+
passthrough=True,
|
|
198
|
+
passthrough_types=passthrough_types,
|
|
199
|
+
verbosity=0,
|
|
200
|
+
)]
|
|
201
|
+
return preprocessors
|
|
202
|
+
|
|
203
|
+
def _preprocess(self, X: pd.DataFrame, y=None, is_train: bool = False, **kwargs):
|
|
204
|
+
if is_train:
|
|
205
|
+
self.preprocessors = self.get_preprocessors()
|
|
206
|
+
if self.preprocessors:
|
|
207
|
+
assert y is not None, f"y must be specified to fit preprocessors... Likely the inheriting class isn't passing `y` in its `preprocess` call."
|
|
208
|
+
# FIXME: add `post_drop_useless`, example: anneal has many useless features
|
|
209
|
+
feature_metadata_in = self._feature_metadata
|
|
210
|
+
for prep in self.preprocessors:
|
|
211
|
+
X = prep.fit_transform(X, y, feature_metadata_in=feature_metadata_in)
|
|
212
|
+
# FIXME: Nick: This is incorrect because it strips away special dtypes. Need to do this properly by fixing in the preprocessors
|
|
213
|
+
feature_metadata_in = prep.feature_metadata
|
|
214
|
+
self._feature_metadata = feature_metadata_in
|
|
215
|
+
self._features_internal = self._feature_metadata.get_features()
|
|
216
|
+
else:
|
|
217
|
+
for prep in self.preprocessors:
|
|
218
|
+
X = prep.transform(X)
|
|
219
|
+
|
|
220
|
+
return super()._preprocess(X, y=y, is_train=is_train, **kwargs)
|
|
@@ -371,7 +371,6 @@ class TabularNeuralNetTorchModel(AbstractNeuralNetworkModel):
|
|
|
371
371
|
best_epoch = 0
|
|
372
372
|
best_val_metric = -np.inf # higher = better
|
|
373
373
|
best_val_update = 0
|
|
374
|
-
val_improve_epoch = 0 # most recent epoch where validation-score strictly improved
|
|
375
374
|
start_fit_time = time.time()
|
|
376
375
|
if time_limit is not None:
|
|
377
376
|
time_limit = time_limit - (start_fit_time - start_time)
|
|
@@ -496,7 +495,7 @@ class TabularNeuralNetTorchModel(AbstractNeuralNetworkModel):
|
|
|
496
495
|
|
|
497
496
|
if time_limit is not None:
|
|
498
497
|
time_elapsed = time.time() - start_fit_time
|
|
499
|
-
time_epoch_average = time_elapsed / (epoch
|
|
498
|
+
time_epoch_average = time_elapsed / max(epoch, 1) # avoid divide by 0
|
|
500
499
|
time_left = time_limit - time_elapsed
|
|
501
500
|
if time_left < time_epoch_average:
|
|
502
501
|
logger.log(20, f"\tRan out of time, stopping training early. (Stopping on epoch {epoch})")
|