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.
Files changed (213) hide show
  1. {autogluon_tabular-1.4.1b20251201/src/autogluon.tabular.egg-info → autogluon_tabular-1.4.1b20251217}/PKG-INFO +38 -38
  2. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/setup.py +10 -22
  3. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/learner/default_learner.py +1 -0
  4. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/__init__.py +1 -0
  5. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/catboost/catboost_model.py +1 -1
  6. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lgb/lgb_model.py +58 -8
  7. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lgb/lgb_utils.py +2 -2
  8. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/rf/rf_model.py +4 -4
  9. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabm/tabm_model.py +2 -2
  10. autogluon_tabular-1.4.1b20251217/src/autogluon/tabular/models/tabprep/prep_lgb_model.py +21 -0
  11. autogluon_tabular-1.4.1b20251217/src/autogluon/tabular/models/tabprep/prep_mixin.py +220 -0
  12. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/torch/tabular_nn_torch.py +1 -2
  13. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/predictor/predictor.py +2 -1
  14. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/registry/_ag_model_registry.py +2 -0
  15. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/trainer/abstract_trainer.py +9 -3
  16. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/trainer/auto_trainer.py +4 -0
  17. autogluon_tabular-1.4.1b20251217/src/autogluon/tabular/tuning/__init__.py +0 -0
  18. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/version.py +1 -1
  19. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217/src/autogluon.tabular.egg-info}/PKG-INFO +38 -38
  20. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon.tabular.egg-info/SOURCES.txt +3 -0
  21. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon.tabular.egg-info/requires.txt +41 -37
  22. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/LICENSE +0 -0
  23. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/NOTICE +0 -0
  24. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/README.md +0 -0
  25. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/setup.cfg +0 -0
  26. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/__init__.py +0 -0
  27. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/configs/__init__.py +0 -0
  28. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/configs/config_helper.py +0 -0
  29. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/configs/feature_generator_presets.py +0 -0
  30. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/configs/hyperparameter_configs.py +0 -0
  31. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/configs/pipeline_presets.py +0 -0
  32. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/configs/presets_configs.py +0 -0
  33. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/configs/zeroshot/__init__.py +0 -0
  34. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/configs/zeroshot/zeroshot_portfolio_2023.py +0 -0
  35. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/configs/zeroshot/zeroshot_portfolio_2025.py +0 -0
  36. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/experimental/__init__.py +0 -0
  37. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/experimental/_scikit_mixin.py +0 -0
  38. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/experimental/_tabular_classifier.py +0 -0
  39. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/experimental/_tabular_regressor.py +0 -0
  40. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/experimental/plot_leaderboard.py +0 -0
  41. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/learner/__init__.py +0 -0
  42. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/learner/abstract_learner.py +0 -0
  43. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/_utils/__init__.py +0 -0
  44. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/_utils/rapids_utils.py +0 -0
  45. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/_utils/torch_utils.py +0 -0
  46. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/automm/__init__.py +0 -0
  47. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/automm/automm_model.py +0 -0
  48. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/automm/ft_transformer.py +0 -0
  49. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/catboost/__init__.py +0 -0
  50. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/catboost/callbacks.py +0 -0
  51. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/catboost/catboost_softclass_utils.py +0 -0
  52. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/catboost/catboost_utils.py +0 -0
  53. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/catboost/hyperparameters/__init__.py +0 -0
  54. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/catboost/hyperparameters/parameters.py +0 -0
  55. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/catboost/hyperparameters/searchspaces.py +0 -0
  56. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/ebm/__init__.py +0 -0
  57. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/ebm/ebm_model.py +0 -0
  58. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/ebm/hyperparameters/__init__.py +0 -0
  59. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/ebm/hyperparameters/parameters.py +0 -0
  60. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/ebm/hyperparameters/searchspaces.py +0 -0
  61. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fastainn/__init__.py +0 -0
  62. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fastainn/callbacks.py +0 -0
  63. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fastainn/fastai_helpers.py +0 -0
  64. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fastainn/hyperparameters/__init__.py +0 -0
  65. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fastainn/hyperparameters/parameters.py +0 -0
  66. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fastainn/hyperparameters/searchspaces.py +0 -0
  67. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fastainn/imports_helper.py +0 -0
  68. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fastainn/quantile_helpers.py +0 -0
  69. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fastainn/tabular_nn_fastai.py +0 -0
  70. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fasttext/__init__.py +0 -0
  71. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fasttext/fasttext_model.py +0 -0
  72. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fasttext/hyperparameters/__init__.py +0 -0
  73. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/fasttext/hyperparameters/parameters.py +0 -0
  74. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/image_prediction/__init__.py +0 -0
  75. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/image_prediction/image_predictor.py +0 -0
  76. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/imodels/__init__.py +0 -0
  77. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/imodels/imodels_models.py +0 -0
  78. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/knn/__init__.py +0 -0
  79. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/knn/_knn_loo_variants.py +0 -0
  80. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/knn/knn_model.py +0 -0
  81. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/knn/knn_rapids_model.py +0 -0
  82. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/knn/knn_utils.py +0 -0
  83. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lgb/__init__.py +0 -0
  84. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lgb/callbacks.py +0 -0
  85. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lgb/hyperparameters/__init__.py +0 -0
  86. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lgb/hyperparameters/parameters.py +0 -0
  87. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lgb/hyperparameters/searchspaces.py +0 -0
  88. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lr/__init__.py +0 -0
  89. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lr/hyperparameters/__init__.py +0 -0
  90. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lr/hyperparameters/parameters.py +0 -0
  91. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lr/hyperparameters/searchspaces.py +0 -0
  92. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lr/lr_model.py +0 -0
  93. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lr/lr_preprocessing_utils.py +0 -0
  94. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/lr/lr_rapids_model.py +0 -0
  95. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/__init__.py +0 -0
  96. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/__init__.py +0 -0
  97. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/config/__init__.py +0 -0
  98. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/config/config_pretrain.py +0 -0
  99. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/config/config_run.py +0 -0
  100. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/config/enums.py +0 -0
  101. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/core/__init__.py +0 -0
  102. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/core/callbacks.py +0 -0
  103. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/core/get_loss.py +0 -0
  104. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/core/get_optimizer.py +0 -0
  105. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/core/get_scheduler.py +0 -0
  106. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/core/prediction_metrics.py +0 -0
  107. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/core/trainer_finetune.py +0 -0
  108. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/data/__init__.py +0 -0
  109. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/data/collator.py +0 -0
  110. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/data/dataset_finetune.py +0 -0
  111. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/data/dataset_split.py +0 -0
  112. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/data/preprocessor.py +0 -0
  113. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/models/__init__.py +0 -0
  114. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/models/base.py +0 -0
  115. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/models/embedding.py +0 -0
  116. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/models/tab2d.py +0 -0
  117. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/utils/__init__.py +0 -0
  118. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/_internal/utils/set_seed.py +0 -0
  119. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/mitra_model.py +0 -0
  120. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/mitra/sklearn_interface.py +0 -0
  121. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/realmlp/__init__.py +0 -0
  122. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/realmlp/realmlp_model.py +0 -0
  123. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/rf/__init__.py +0 -0
  124. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/rf/compilers/__init__.py +0 -0
  125. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/rf/compilers/native.py +0 -0
  126. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/rf/compilers/onnx.py +0 -0
  127. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/rf/rf_quantile.py +0 -0
  128. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/rf/rf_rapids_model.py +0 -0
  129. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabicl/__init__.py +0 -0
  130. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabicl/tabicl_model.py +0 -0
  131. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabm/__init__.py +0 -0
  132. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabm/_tabm_internal.py +0 -0
  133. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabm/rtdl_num_embeddings.py +0 -0
  134. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabm/tabm_reference.py +0 -0
  135. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/__init__.py +0 -0
  136. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/__init__.py +0 -0
  137. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/config/__init__.py +0 -0
  138. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/config/config_run.py +0 -0
  139. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/__init__.py +0 -0
  140. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/callbacks.py +0 -0
  141. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/collator.py +0 -0
  142. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/dataset_split.py +0 -0
  143. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/enums.py +0 -0
  144. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/get_loss.py +0 -0
  145. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/get_optimizer.py +0 -0
  146. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/get_scheduler.py +0 -0
  147. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/trainer_finetune.py +0 -0
  148. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/core/y_transformer.py +0 -0
  149. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/data/__init__.py +0 -0
  150. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/data/dataset_finetune.py +0 -0
  151. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/data/preprocessor.py +0 -0
  152. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/models/__init__.py +0 -0
  153. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/models/foundation/__init__.py +0 -0
  154. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/models/foundation/embedding.py +0 -0
  155. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/models/foundation/foundation_transformer.py +0 -0
  156. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/results/__init__.py +0 -0
  157. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/results/prediction_metrics.py +0 -0
  158. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/tabpfnmix_classifier.py +0 -0
  159. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/_internal/tabpfnmix_regressor.py +0 -0
  160. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnmix/tabpfnmix_model.py +0 -0
  161. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnv2/__init__.py +0 -0
  162. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnv2/rfpfn/__init__.py +0 -0
  163. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnv2/rfpfn/configs.py +0 -0
  164. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnv2/rfpfn/scoring_utils.py +0 -0
  165. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnv2/rfpfn/sklearn_based_decision_tree_tabpfn.py +0 -0
  166. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnv2/rfpfn/sklearn_based_random_forest_tabpfn.py +0 -0
  167. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnv2/rfpfn/sklearn_compat.py +0 -0
  168. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnv2/rfpfn/utils.py +0 -0
  169. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabpfnv2/tabpfnv2_model.py +0 -0
  170. {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
  171. {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
  172. {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
  173. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/compilers/native.py +0 -0
  174. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/compilers/onnx.py +0 -0
  175. {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
  176. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/hyperparameters/parameters.py +0 -0
  177. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/hyperparameters/searchspaces.py +0 -0
  178. {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
  179. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/torch/tabular_torch_dataset.py +0 -0
  180. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/torch/torch_network_modules.py +0 -0
  181. {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
  182. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/utils/categorical_encoders.py +0 -0
  183. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/utils/data_preprocessor.py +0 -0
  184. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/tabular_nn/utils/nn_architecture_utils.py +0 -0
  185. {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
  186. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/text_prediction/text_prediction_v1_model.py +0 -0
  187. {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
  188. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/xgboost/callbacks.py +0 -0
  189. {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
  190. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/xgboost/hyperparameters/parameters.py +0 -0
  191. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/xgboost/hyperparameters/searchspaces.py +0 -0
  192. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/xgboost/xgboost_model.py +0 -0
  193. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/xgboost/xgboost_utils.py +0 -0
  194. {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
  195. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/models/xt/xt_model.py +0 -0
  196. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/predictor/__init__.py +0 -0
  197. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/predictor/interpretable_predictor.py +0 -0
  198. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/registry/__init__.py +0 -0
  199. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/registry/_model_registry.py +0 -0
  200. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/testing/__init__.py +0 -0
  201. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/testing/fit_helper.py +0 -0
  202. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/testing/generate_datasets.py +0 -0
  203. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/testing/model_fit_helper.py +0 -0
  204. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/trainer/__init__.py +0 -0
  205. {autogluon_tabular-1.4.1b20251201/src/autogluon/tabular/tuning → autogluon_tabular-1.4.1b20251217/src/autogluon/tabular/trainer/model_presets}/__init__.py +0 -0
  206. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/trainer/model_presets/presets.py +0 -0
  207. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/trainer/model_presets/presets_distill.py +0 -0
  208. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon/tabular/tuning/feature_pruner.py +0 -0
  209. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon.tabular.egg-info/dependency_links.txt +0 -0
  210. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon.tabular.egg-info/namespace_packages.txt +0 -0
  211. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon.tabular.egg-info/top_level.txt +0 -0
  212. {autogluon_tabular-1.4.1b20251201 → autogluon_tabular-1.4.1b20251217}/src/autogluon.tabular.egg-info/zip-safe +0 -0
  213. {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.1b20251201
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.1b20251201
44
- Requires-Dist: autogluon.features==1.4.1b20251201
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.8,>=2.6; extra == "fastai"
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.8,>=2.6; extra == "tabm"
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.8,>=2.6; extra == "tabpfnmix"
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.8,>=2.6; extra == "mitra"
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.1b20251201; extra == "ray"
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: onnx<1.16.2,>=1.13.0; platform_system == "Windows" and extra == "skl2onnx"
86
- Requires-Dist: onnx<1.18.0,>=1.13.0; platform_system != "Windows" and extra == "skl2onnx"
87
- Requires-Dist: skl2onnx<1.18.0,>=1.15.0; extra == "skl2onnx"
88
- Requires-Dist: onnxruntime<1.20.0,>=1.17.0; extra == "skl2onnx"
89
- Requires-Dist: onnxruntime-gpu<1.20.0,>=1.17.0; extra == "skl2onnx"
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: fastai<2.9,>=2.3.1; extra == "all"
94
+ Requires-Dist: huggingface_hub[torch]<1.0; extra == "all"
93
95
  Requires-Dist: einx; extra == "all"
94
- Requires-Dist: loguru; extra == "all"
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: torch<2.8,>=2.6; extra == "all"
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: spacy<3.9; extra == "tabarena"
107
- Requires-Dist: einx; extra == "tabarena"
108
- Requires-Dist: transformers; extra == "tabarena"
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: autogluon.core[all]==1.4.1b20251201; extra == "tabarena"
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: huggingface_hub[torch]<1.0; extra == "tabarena"
118
- Requires-Dist: catboost<1.3,>=1.2; extra == "tabarena"
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: numpy<2.3.0,>=1.25; extra == "tabarena"
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.8,>=2.6; extra == "tests"
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: onnx<1.16.2,>=1.13.0; platform_system == "Windows" and extra == "tests"
134
- Requires-Dist: onnx<1.18.0,>=1.13.0; platform_system != "Windows" and extra == "tests"
135
- Requires-Dist: skl2onnx<1.18.0,>=1.15.0; extra == "tests"
136
- Requires-Dist: onnxruntime<1.20.0,>=1.17.0; extra == "tests"
137
- Requires-Dist: onnxruntime-gpu<1.20.0,>=1.17.0; extra == "tests"
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
- is_aarch64 = platform.machine() == "aarch64"
96
- is_darwin = sys.platform == "darwin"
97
-
98
- if is_darwin or is_aarch64:
99
- # For macOS or aarch64, only use CPU version
100
- extras_require["skl2onnx"] = [
101
- "onnx>=1.13.0,<1.16.2;platform_system=='Windows'", # cap at 1.16.1 for issue https://github.com/onnx/onnx/issues/6267
102
- "onnx>=1.13.0,<1.18.0;platform_system!='Windows'",
103
- "skl2onnx>=1.15.0,<1.18.0",
104
- # For macOS, there isn't a onnxruntime-gpu package installed with skl2onnx.
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 * len(X.columns) * num_leaves
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, 1000)
128
- mem_size_estimators = n_estimators_min * mem_size_per_estimator # memory estimate after fitting up to 1000 estimators
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, y=y, location=os.path.join("self.path", "datasets", "train"), params=data_params, save=save, weight=sample_weight
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
- n_estimators_minimum = min(40, n_estimators_final)
154
+ n_estimators = n_estimators_final
155
155
  else: # if search space
156
- n_estimators_minimum = 40
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
- expected_min_memory_usage = int(bytes_per_estimator * n_estimators_minimum)
160
- return expected_min_memory_usage
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
- X_train, X_val, y_train, y_val = generate_train_test_split(
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 + 1)
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})")