classifier-toolkit 0.3.2__tar.gz → 0.3.4__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.

Potentially problematic release.


This version of classifier-toolkit might be problematic. Click here for more details.

Files changed (225) hide show
  1. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/.github/workflows/docs.yml +2 -0
  2. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/.gitignore +1 -0
  3. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/PKG-INFO +2 -2
  4. classifier_toolkit-0.3.4/docs/examples/feature_selection_advanced.md +111 -0
  5. classifier_toolkit-0.3.4/docs/examples/feature_selection_example.md +123 -0
  6. classifier_toolkit-0.3.4/docs/feature_selection/overview.md +89 -0
  7. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_selection/wrapper_methods/combination_search.md +1 -1
  8. classifier_toolkit-0.3.4/docs/index.md +92 -0
  9. classifier_toolkit-0.3.4/docs/model_training/overview.md +51 -0
  10. classifier_toolkit-0.3.4/examples/example_bayesian_search.ipynb +4475 -0
  11. classifier_toolkit-0.3.4/examples/example_combination_feature_search.ipynb +4262 -0
  12. classifier_toolkit-0.3.4/examples/example_explainability_catboost.ipynb +1565 -0
  13. classifier_toolkit-0.3.4/examples/example_explainability_lgbm.ipynb +1625 -0
  14. classifier_toolkit-0.3.4/examples/example_feature_reduction.ipynb +2280 -0
  15. classifier_toolkit-0.3.4/examples/example_grid_search.ipynb +1975 -0
  16. classifier_toolkit-0.3.4/examples/example_model_training_catboost.ipynb +133 -0
  17. classifier_toolkit-0.3.4/examples/example_model_training_lgbm.ipynb +133 -0
  18. classifier_toolkit-0.3.4/examples/example_recursive_feature_eliminator.ipynb +862 -0
  19. classifier_toolkit-0.3.4/examples/example_train_test_partition.ipynb +446 -0
  20. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/mkdocs.yml +2 -0
  21. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/pyproject.toml +2 -2
  22. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/uv.lock +1 -1
  23. classifier_toolkit-0.3.2/docs/examples/feature_selection_advanced.md +0 -115
  24. classifier_toolkit-0.3.2/docs/examples/feature_selection_example.md +0 -105
  25. classifier_toolkit-0.3.2/docs/feature_selection/overview.md +0 -103
  26. classifier_toolkit-0.3.2/docs/index.md +0 -63
  27. classifier_toolkit-0.3.2/examples/example.py +0 -19
  28. classifier_toolkit-0.3.2/examples/selected_features.json +0 -189
  29. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/.github/pull_request_template/default.md +0 -0
  30. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/.github/workflows/checks.yaml +0 -0
  31. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/.github/workflows/master.yaml +0 -0
  32. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/.github/workflows/release.yaml +0 -0
  33. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/.github/workflows/working-branch.yaml +0 -0
  34. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/.python-version +0 -0
  35. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/.sqlfluff +0 -0
  36. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/LICENSE +0 -0
  37. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/Makefile +0 -0
  38. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/README.md +0 -0
  39. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/data_partition/__init__.py +0 -0
  40. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/data_partition/data_preprocess.py +0 -0
  41. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/data_partition/optimize_data.py +0 -0
  42. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/data_partition/split_train_test.py +0 -0
  43. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/eda/__init__.py +0 -0
  44. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/eda/bivariate_analysis.py +0 -0
  45. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/eda/eda_toolkit.py +0 -0
  46. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/eda/feature_engineering.py +0 -0
  47. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/eda/first_glance.py +0 -0
  48. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/eda/univariate_analysis.py +0 -0
  49. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/eda/visualizations.py +0 -0
  50. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/eda/warnings/__init__.py +0 -0
  51. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/eda/warnings/automated_warnings.py +0 -0
  52. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/eda/warnings/default_warnings.py +0 -0
  53. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/explainability/__init__.py +0 -0
  54. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/explainability/base.py +0 -0
  55. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/explainability/interactions.py +0 -0
  56. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/explainability/misclassification.py +0 -0
  57. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/explainability/plots.py +0 -0
  58. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/explainability/toolkit.py +0 -0
  59. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/explainability/tree_explainer.py +0 -0
  60. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_reduction/__init__.py +0 -0
  61. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_reduction/base.py +0 -0
  62. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_reduction/correlation.py +0 -0
  63. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_reduction/counter_intuitive.py +0 -0
  64. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_reduction/drift.py +0 -0
  65. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_reduction/expert_rules.py +0 -0
  66. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_reduction/low_variance.py +0 -0
  67. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_reduction/predictive_power.py +0 -0
  68. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_reduction/reducer.py +0 -0
  69. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/__init__.py +0 -0
  70. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/base.py +0 -0
  71. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/embedded_methods/__init__.py +0 -0
  72. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/embedded_methods/elastic_net.py +0 -0
  73. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/feature_stability.py +0 -0
  74. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/meta_selector.py +0 -0
  75. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/utils/__init__.py +0 -0
  76. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/utils/data_handling.py +0 -0
  77. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/utils/feature_type_constraints.py +0 -0
  78. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/utils/plottings.py +0 -0
  79. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/utils/scoring.py +0 -0
  80. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/wrapper_methods/__init__.py +0 -0
  81. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/wrapper_methods/bayesian_search.py +0 -0
  82. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/wrapper_methods/boruta.py +0 -0
  83. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/wrapper_methods/combination_search.py +0 -0
  84. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/wrapper_methods/recursive_feature_eliminator.py +0 -0
  85. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/wrapper_methods/rfe.py +0 -0
  86. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/wrapper_methods/rfe_catboost.py +0 -0
  87. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/feature_selection/wrapper_methods/sequential_selection.py +0 -0
  88. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/model_training/__init__.py +0 -0
  89. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/model_training/hyper_parameter_tuning/__init__.py +0 -0
  90. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/model_training/hyper_parameter_tuning/tuner.py +0 -0
  91. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/model_training/models/__init__.py +0 -0
  92. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/model_training/models/base.py +0 -0
  93. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/model_training/models/ensemble_methods.py +0 -0
  94. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/model_training/utils/__init__.py +0 -0
  95. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/classifier_toolkit/model_training/utils/params.py +0 -0
  96. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/CNAME +0 -0
  97. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/changelog.md +0 -0
  98. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/data_partition/data_preprocess.md +0 -0
  99. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/data_partition/optimize_data.md +0 -0
  100. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/data_partition/overview.md +0 -0
  101. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/data_partition/split_train_test.md +0 -0
  102. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/eda/bivariate_analysis.md +0 -0
  103. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/eda/eda_toolkit.md +0 -0
  104. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/eda/feature_engineering.md +0 -0
  105. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/eda/first_glance.md +0 -0
  106. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/eda/overview.md +0 -0
  107. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/eda/univariate_analysis.md +0 -0
  108. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/eda/visualizations.md +0 -0
  109. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/eda/warnings/default_warnings.md +0 -0
  110. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/eda/warnings/warning_system.md +0 -0
  111. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/examples/eda_example.md +0 -0
  112. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/explainability/interactions.md +0 -0
  113. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/explainability/misclassification.md +0 -0
  114. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/explainability/overview.md +0 -0
  115. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/explainability/plots.md +0 -0
  116. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/explainability/toolkit.md +0 -0
  117. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/explainability/tree_explainer.md +0 -0
  118. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_reduction/correlation.md +0 -0
  119. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_reduction/counter_intuitive.md +0 -0
  120. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_reduction/drift.md +0 -0
  121. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_reduction/expert_rules.md +0 -0
  122. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_reduction/low_variance.md +0 -0
  123. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_reduction/overview.md +0 -0
  124. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_reduction/predictive_power.md +0 -0
  125. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_reduction/reducer.md +0 -0
  126. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_selection/embedded_methods/elastic_net.md +0 -0
  127. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_selection/feature_stability.md +0 -0
  128. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_selection/meta_selector.md +0 -0
  129. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_selection/utils/data_handling.md +0 -0
  130. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_selection/utils/scoring.md +0 -0
  131. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_selection/wrapper_methods/bayesian_search.md +0 -0
  132. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_selection/wrapper_methods/boruta.md +0 -0
  133. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_selection/wrapper_methods/recursive_feature_eliminator.md +0 -0
  134. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_selection/wrapper_methods/rfe.md +0 -0
  135. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/feature_selection/wrapper_methods/sequential_selection.md +0 -0
  136. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/model_training/tuner.md +0 -0
  137. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/data_partition/data_preprocess.md +0 -0
  138. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/data_partition/optimize_data.md +0 -0
  139. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/data_partition/overview.md +0 -0
  140. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/data_partition/split_train_test.md +0 -0
  141. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/eda/bivariate_analysis.md +0 -0
  142. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/eda/eda_toolkit.md +0 -0
  143. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/eda/feature_engineering.md +0 -0
  144. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/eda/first_glance.md +0 -0
  145. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/eda/overview.md +0 -0
  146. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/eda/univariate_analysis.md +0 -0
  147. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/eda/visualizations.md +0 -0
  148. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/eda/warnings/default_warnings.md +0 -0
  149. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/eda/warnings/warning_system.md +0 -0
  150. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/explainability/interactions.md +0 -0
  151. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/explainability/misclassification.md +0 -0
  152. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/explainability/overview.md +0 -0
  153. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/explainability/plots.md +0 -0
  154. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/explainability/toolkit.md +0 -0
  155. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/explainability/tree_explainer.md +0 -0
  156. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_reduction/base.md +0 -0
  157. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_reduction/correlation.md +0 -0
  158. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_reduction/counter_intuitive.md +0 -0
  159. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_reduction/drift.md +0 -0
  160. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_reduction/expert_rules.md +0 -0
  161. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_reduction/low_variance.md +0 -0
  162. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_reduction/overview.md +0 -0
  163. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_reduction/predictive_power.md +0 -0
  164. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_reduction/reducer.md +0 -0
  165. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_selection/base.md +0 -0
  166. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_selection/embedded_methods/elastic_net.md +0 -0
  167. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_selection/feature_stability.md +0 -0
  168. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_selection/meta_selector.md +0 -0
  169. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_selection/overview.md +0 -0
  170. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_selection/utils/data_handling.md +0 -0
  171. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_selection/utils/plottings.md +0 -0
  172. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_selection/utils/scoring.md +0 -0
  173. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_selection/wrapper_methods/bayesian_search.md +0 -0
  174. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_selection/wrapper_methods/boruta.md +0 -0
  175. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_selection/wrapper_methods/combination_search.md +0 -0
  176. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_selection/wrapper_methods/recursive_feature_eliminator.md +0 -0
  177. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_selection/wrapper_methods/rfe.md +0 -0
  178. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/feature_selection/wrapper_methods/sequential_selection.md +0 -0
  179. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/model_training/params.md +0 -0
  180. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/reference/tuner/tuner.md +0 -0
  181. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/docs/stylesheets/extra.css +0 -0
  182. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/examples/__init__.py +0 -0
  183. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/main.py +0 -0
  184. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/notebooks/paylater_removed.json +0 -0
  185. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/ruff.toml +0 -0
  186. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/__init__.py +0 -0
  187. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/conftest.py +0 -0
  188. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/data_partition/__init__.py +0 -0
  189. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/data_partition/test_data_preprocess.py +0 -0
  190. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/data_partition/test_optimize_data.py +0 -0
  191. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/data_partition/test_split_train_test.py +0 -0
  192. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/eda/__init__.py +0 -0
  193. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/eda/test_bivariate_analysis.py +0 -0
  194. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/eda/test_feature_engineering.py +0 -0
  195. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/eda/test_first_glance.py +0 -0
  196. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/eda/test_univariate_analysis.py +0 -0
  197. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/eda/test_visualizations.py +0 -0
  198. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/eda/test_warnings.py +0 -0
  199. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/explainability/__init__.py +0 -0
  200. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/explainability/test_catboost_e2e.py +0 -0
  201. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/explainability/test_misclassification.py +0 -0
  202. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/explainability/test_plots.py +0 -0
  203. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/explainability/test_smoke.py +0 -0
  204. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/explainability/test_toolkit.py +0 -0
  205. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/explainability/test_tree_explainer.py +0 -0
  206. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_reduction/__init__.py +0 -0
  207. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_reduction/test_correlation.py +0 -0
  208. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_reduction/test_counter_intuitive.py +0 -0
  209. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_reduction/test_drift.py +0 -0
  210. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_reduction/test_expert_rules.py +0 -0
  211. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_reduction/test_low_variance.py +0 -0
  212. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_reduction/test_predictive_power.py +0 -0
  213. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_reduction/test_reducer.py +0 -0
  214. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_reduction/test_smoke.py +0 -0
  215. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_selection/__init__.py +0 -0
  216. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_selection/test_bayesian_search.py +0 -0
  217. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_selection/test_boruta.py +0 -0
  218. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_selection/test_combination_search.py +0 -0
  219. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_selection/test_elastic_net.py +0 -0
  220. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_selection/test_feature_stability.py +0 -0
  221. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_selection/test_recursive_feature_eliminator.py +0 -0
  222. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_selection/test_rfe.py +0 -0
  223. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_selection/test_rfe_catboost.py +0 -0
  224. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_selection/test_scoring.py +0 -0
  225. {classifier_toolkit-0.3.2 → classifier_toolkit-0.3.4}/tests/feature_selection/test_sequential_selection.py +0 -0
@@ -6,10 +6,12 @@ on:
6
6
  paths:
7
7
  - "docs/**"
8
8
  - "mkdocs.yml"
9
+ workflow_dispatch:
9
10
 
10
11
  jobs:
11
12
  deploy:
12
13
  runs-on: default
14
+ if: github.event_name != 'workflow_dispatch' || github.ref == 'refs/heads/master'
13
15
  permissions:
14
16
  contents: write
15
17
  steps:
@@ -78,6 +78,7 @@ target/
78
78
  # Jupyter Notebook
79
79
  .ipynb_checkpoints
80
80
  *.ipynb
81
+ !examples/*.ipynb
81
82
 
82
83
  # IPython
83
84
  profile_default/
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: classifier-toolkit
3
- Version: 0.3.2
4
- Project-URL: Documentation, http://classifier-toolkit.gh-pages.qonto.co/
3
+ Version: 0.3.4
4
+ Project-URL: Documentation, https://supreme-adventure-jg5qkyr.pages.github.io/
5
5
  Author-email: "senih.yilmaz" <senih.yilmaz@qonto.com>, "jeremy.fraoua" <jeremy.fraoua@qonto.com>, "gauthier.marquand" <gauthier.marquand@qonto.com>, "arnaud.alepee" <arnaud.alepee@qonto.com>
6
6
  License-File: LICENSE
7
7
  Requires-Python: <3.14,>=3.9
@@ -0,0 +1,111 @@
1
+ # Advanced Feature Selection Examples
2
+
3
+ ## Feature Stability Analysis
4
+
5
+ ```python
6
+ from classifier_toolkit.feature_selection import FeatureStability
7
+
8
+ stability = FeatureStability(
9
+ X=X,
10
+ y=y,
11
+ target_col="target",
12
+ model_params={"n_estimators": 100},
13
+ method_params={"d": 100, "n_sets": 10},
14
+ model="xgboost",
15
+ method="jackknife",
16
+ )
17
+
18
+ stability.fit()
19
+ results = stability.calculate_stability()
20
+ print(results)
21
+ ```
22
+
23
+ ## Boruta Feature Selection
24
+
25
+ ```python
26
+ from classifier_toolkit.feature_selection import BorutaSelector
27
+
28
+ selector = BorutaSelector(
29
+ estimator_name="xgboost",
30
+ n_estimators="auto",
31
+ perc=99,
32
+ alpha=0.001,
33
+ )
34
+
35
+ X_selected = selector.fit_transform(X, y)
36
+ print(selector.selected_features_)
37
+ ```
38
+
39
+ ## Bayesian Feature Search
40
+
41
+ ```python
42
+ from classifier_toolkit.feature_selection import BayesianFeatureSelector
43
+
44
+ selector = BayesianFeatureSelector(
45
+ estimator_name="lightgbm",
46
+ n_features_to_select=10,
47
+ max_trials=100,
48
+ scoring="average_precision",
49
+ )
50
+
51
+ X_selected = selector.fit_transform(X, y)
52
+ print(selector.selected_features_)
53
+ ```
54
+
55
+ ## RFE with CatBoost
56
+
57
+ ```python
58
+ from classifier_toolkit.feature_selection import RFECatBoostSelector
59
+
60
+ selector = RFECatBoostSelector(
61
+ model_params={"iterations": 200, "depth": 4, "verbose": False},
62
+ cat_features=["legal_sector"],
63
+ n_features_to_select=10,
64
+ )
65
+
66
+ selector.fit(X_train, y_train, cv_folds=cv_folds)
67
+ print(selector.selected_features_)
68
+ print(selector.rankings_)
69
+ ```
70
+
71
+ ## Elastic Net Selection
72
+
73
+ ```python
74
+ from classifier_toolkit.feature_selection import ElasticNetLogisticSelector
75
+
76
+ selector = ElasticNetLogisticSelector(
77
+ n_features_to_select=10,
78
+ scoring="average_precision",
79
+ )
80
+
81
+ X_selected = selector.fit_transform(X, y)
82
+ print(selector.selected_features_)
83
+ ```
84
+
85
+ ## Combining Multiple Methods
86
+
87
+ ```python
88
+ from classifier_toolkit.feature_selection import (
89
+ MetaSelector,
90
+ RFESelector,
91
+ BorutaSelector,
92
+ )
93
+
94
+ selector = MetaSelector(
95
+ model_params=[],
96
+ rfe_params={},
97
+ rfe_catboost_params={},
98
+ sequential_params={},
99
+ elastic_net_params={},
100
+ n_features_to_select=5,
101
+ methods=[
102
+ RFESelector(estimator_name="lightgbm", n_features_to_select=10),
103
+ BorutaSelector(estimator_name="xgboost", n_estimators="auto"),
104
+ ],
105
+ voting="majority",
106
+ )
107
+
108
+ X_selected = selector.fit_transform(X, y)
109
+ method_results = selector.get_method_specific_results()
110
+ print(selector.selected_features_)
111
+ ```
@@ -0,0 +1,123 @@
1
+ # Feature Selection Examples
2
+
3
+ ## RFE with LightGBM
4
+
5
+ ```python
6
+ from classifier_toolkit.feature_selection import RFESelector
7
+
8
+ selector = RFESelector(
9
+ estimator_name="lightgbm",
10
+ n_features_to_select=10,
11
+ scoring="average_precision",
12
+ cat_features=["legal_sector", "industry"],
13
+ )
14
+
15
+ selector.fit(X_train, y_train, cv_folds=cv_folds)
16
+
17
+ print(selector.selected_features_)
18
+ print(selector.prauc_scores_)
19
+ ```
20
+
21
+ ### Auto-select the optimal number of features
22
+
23
+ ```python
24
+ selector = RFESelector(
25
+ estimator_name="lightgbm",
26
+ n_features_to_select=-1, # auto — picks the peak PR-AUC
27
+ scoring="average_precision",
28
+ )
29
+
30
+ selector.fit(X_train, y_train, cv_folds=cv_folds)
31
+ print(f"Selected {selector.n_features_to_select} features")
32
+ print(selector.selected_features_)
33
+ ```
34
+
35
+ ## Recursive Feature Eliminator (large feature sets)
36
+
37
+ ```python
38
+ from classifier_toolkit.feature_selection import RecursiveFeatureEliminator
39
+
40
+ rfe = RecursiveFeatureEliminator(
41
+ estimator_name="lightgbm",
42
+ model_params={"random_state": 42},
43
+ n_features_to_select=10,
44
+ overfitting_strategy="rollback",
45
+ )
46
+
47
+ rfe.fit(X_train, y_train, X_val=X_val, y_val=y_val)
48
+ X_selected = rfe.transform(X_train)
49
+
50
+ print(rfe.selected_features_)
51
+ ```
52
+
53
+ ## Sequential Selection
54
+
55
+ ```python
56
+ from classifier_toolkit.feature_selection import SequentialSelector
57
+
58
+ selector = SequentialSelector(
59
+ estimator_name="lightgbm",
60
+ method="forward",
61
+ n_features_to_select=5,
62
+ scoring="roc_auc",
63
+ cv=5,
64
+ )
65
+
66
+ X_selected = selector.fit_transform(X, y)
67
+ selector.print_feature_importances()
68
+ ```
69
+
70
+ ## Ensemble Selection with MetaSelector
71
+
72
+ ```python
73
+ from classifier_toolkit.feature_selection import (
74
+ MetaSelector,
75
+ RFESelector,
76
+ SequentialSelector,
77
+ )
78
+
79
+ selector = MetaSelector(
80
+ model_params=[],
81
+ rfe_params={},
82
+ rfe_catboost_params={},
83
+ sequential_params={},
84
+ elastic_net_params={},
85
+ n_features_to_select=5,
86
+ methods=[
87
+ RFESelector(
88
+ estimator_name="lightgbm",
89
+ n_features_to_select=10,
90
+ ),
91
+ SequentialSelector(
92
+ estimator_params={},
93
+ method="forward",
94
+ estimator_name="lightgbm",
95
+ n_features_to_select=10,
96
+ ),
97
+ ],
98
+ voting="majority",
99
+ )
100
+
101
+ X_selected = selector.fit_transform(X, y)
102
+ method_results = selector.get_method_specific_results()
103
+ importances = selector.get_feature_importances()
104
+ ```
105
+
106
+ ## Feature Combination Searcher (exhaustive subset search)
107
+
108
+ ```python
109
+ from classifier_toolkit.feature_selection import FeatureCombinationSearcher
110
+
111
+ searcher = FeatureCombinationSearcher(
112
+ required_features=["feature_a", "feature_b"],
113
+ candidate_features=["feature_c", "feature_d", "feature_e"],
114
+ categorical_features=["feature_b"],
115
+ model_params={"random_state": 42, "n_estimators": 100},
116
+ estimator_name="lightgbm",
117
+ min_features=3,
118
+ max_features=4,
119
+ )
120
+
121
+ results = searcher.search(X_train, y_train, X_val, y_val, X_test, y_test)
122
+ print(results.sort_values("val_auc", ascending=False).head())
123
+ ```
@@ -0,0 +1,89 @@
1
+ # Feature Selection Package Overview
2
+
3
+ The Feature Selection package provides a comprehensive toolkit for selecting the most predictive features for your machine learning models. It includes wrapper methods, embedded methods, ensemble orchestration, and stability analysis.
4
+
5
+ ## Links
6
+
7
+ - [GitHub Repository](https://github.com/qonto-private/classifier-toolkit)
8
+ - [PyPI Package](https://pypi.org/project/classifier-toolkit/)
9
+
10
+ ## Core Components
11
+
12
+ ### [Meta Selector](meta_selector.md)
13
+
14
+ The central orchestrator that combines multiple feature selection methods and aggregates their results via voting:
15
+
16
+ - Majority, union, and intersection voting strategies
17
+ - Per-method result tracking
18
+ - Combined feature importance scores
19
+
20
+ ### Wrapper Methods
21
+
22
+ #### RFE — Cross-validated elimination
23
+
24
+ - [RFE](wrapper_methods/rfe.md) — `RFESelector` (XGBoost, LightGBM, Random Forest) and `RFECatBoostSelector` (CatBoost native). Eliminates features step by step, scored via cross-validation. Supports auto feature count (`n_features_to_select=-1`), SHAP-combined ranking, and re-ranking.
25
+
26
+ #### Recursive Feature Eliminator — Adaptive two-phase elimination
27
+
28
+ - [Recursive Feature Eliminator](wrapper_methods/recursive_feature_eliminator.md) — `RecursiveFeatureEliminator`. A more advanced eliminator designed for large feature sets: runs a fast batch phase first, then switches to one-by-one removal with overfitting detection and rollback. Use this when you have 50+ features and want early stopping if val performance drops.
29
+
30
+ > **RFE vs RecursiveFeatureEliminator**: `RFESelector` is a cross-validated ranker — it repeatedly fits, scores all folds, and drops the lowest-ranked feature. `RecursiveFeatureEliminator` is an adaptive eliminator with a two-phase strategy and overfitting guard — better suited for large feature sets where early stopping matters.
31
+
32
+ #### Other wrapper methods
33
+
34
+ - [Feature Combination Searcher](wrapper_methods/combination_search.md) — `FeatureCombinationSearcher`. Exhaustive search over all subsets of a small candidate pool. Use when you want to evaluate every possible combination rather than relying on importance rankings.
35
+ - [Sequential Selection](wrapper_methods/sequential_selection.md) — `SequentialSelector`. Forward, backward, and bidirectional greedy selection.
36
+ - [Bayesian Search](wrapper_methods/bayesian_search.md) — `BayesianFeatureSelector`. Bayesian optimisation over feature subsets.
37
+ - [Boruta](wrapper_methods/boruta.md) — `BorutaSelector`. Shadow-feature statistical testing.
38
+
39
+ ### Embedded Methods
40
+
41
+ - [Elastic Net](embedded_methods/elastic_net.md) — `ElasticNetLogisticSelector`. Regularization-based selection via L1/L2 penalty.
42
+
43
+ ### Analysis Tools
44
+
45
+ - [Feature Stability](feature_stability.md) — `FeatureStability`. Measures how consistently features are selected across resampling runs.
46
+
47
+ ### Utils
48
+
49
+ - [Data Handling](utils/data_handling.md) — CV fold management and data utilities
50
+ - [Scoring](utils/scoring.md) — Custom scoring functions (PR-AUC, TPR, FPR)
51
+
52
+ ## Getting Started
53
+
54
+ ```python
55
+ from classifier_toolkit.feature_selection import (
56
+ MetaSelector,
57
+ RFESelector,
58
+ SequentialSelector,
59
+ )
60
+
61
+ selector = MetaSelector(
62
+ model_params=[],
63
+ rfe_params={},
64
+ rfe_catboost_params={},
65
+ sequential_params={},
66
+ elastic_net_params={},
67
+ n_features_to_select=5,
68
+ methods=[
69
+ RFESelector(estimator_name="lightgbm", n_features_to_select=10),
70
+ SequentialSelector(
71
+ estimator_params={},
72
+ method="forward",
73
+ estimator_name="lightgbm",
74
+ n_features_to_select=10,
75
+ ),
76
+ ],
77
+ voting="majority",
78
+ )
79
+
80
+ X_selected = selector.fit_transform(X, y)
81
+ method_results = selector.get_method_specific_results()
82
+ ```
83
+
84
+ ## Best Practices
85
+
86
+ 1. **Run Feature Reduction first** — use the [Feature Reduction](../feature_reduction/overview.md) module to drop low-variance, high-correlation, and drifted features before running selection. Smaller input sets make selection faster and more stable.
87
+ 2. **Use cross-validation** — all wrapper methods accept `cv_folds` for robust scoring; avoid fitting on a single split.
88
+ 3. **Combine methods with MetaSelector** — consensus features selected by multiple methods are more stable than those selected by one.
89
+ 4. **Check stability** — after selection, use `FeatureStability` to verify that selected features remain consistent across resampling.
@@ -32,7 +32,7 @@ print(results.sort_values("val_auc", ascending=False).head())
32
32
 
33
33
  ## Notes
34
34
 
35
- - Complexity grows as C(n_candidates, k) — keep the candidate pool small (< 15 features)
35
+ - Complexity grows as C(n_candidates, k) — for best performance, keeping the candidate pool under 15 features is recommended, though the searcher works fine with larger pools (20+ features) when runtime is acceptable
36
36
  - `required_features` are always included in every combination
37
37
  - Supports CatBoost and LightGBM backends
38
38
 
@@ -0,0 +1,92 @@
1
+ # Classifier Toolkit
2
+
3
+ A comprehensive Python toolkit for the full machine learning workflow — from data preparation to model deployment.
4
+
5
+ ## Overview
6
+
7
+ Classifier Toolkit is organized into six modules:
8
+
9
+ - **EDA**: Data inspection, visualization, univariate/bivariate analysis, feature engineering, and automated warnings
10
+ - **Feature Reduction**: Pre-selection filters to remove low-variance, high-correlation, drifted, or counter-intuitive features before feature selection
11
+ - **Feature Selection**: Wrapper, embedded, and ensemble methods for selecting the most predictive features
12
+ - **Model Training**: Hyperparameter tuning for CatBoost and LightGBM via grid search or Bayesian optimization
13
+ - **Data Partition**: Train/test splitting with temporal awareness, preprocessing, and dtype optimization
14
+ - **Explainability**: SHAP-based explanations, interaction analysis, and misclassification diagnostics
15
+
16
+ ## Installation
17
+
18
+ ```bash
19
+ pip install classifier-toolkit
20
+ ```
21
+
22
+ ## Quick Start
23
+
24
+ ### EDA
25
+
26
+ ```python
27
+ from classifier_toolkit.eda import EDAToolkit
28
+
29
+ eda = EDAToolkit(
30
+ dataframe=df,
31
+ target_column="target",
32
+ numerical_columns=["amount", "age"],
33
+ categorical_columns=["category"],
34
+ )
35
+
36
+ eda.perform_checks()
37
+ eda.plot_numerical_distributions()
38
+ ```
39
+
40
+ ### Feature Reduction
41
+
42
+ ```python
43
+ from classifier_toolkit.feature_reduction import FeatureReducer
44
+
45
+ reducer = FeatureReducer(df, target_col="target")
46
+ reducer.run_all()
47
+ features_to_drop = reducer.get_features_to_drop()
48
+ ```
49
+
50
+ ### Feature Selection
51
+
52
+ ```python
53
+ from classifier_toolkit.feature_selection import RFESelector
54
+
55
+ selector = RFESelector(
56
+ estimator_name="lightgbm",
57
+ n_features_to_select=10,
58
+ scoring="average_precision",
59
+ )
60
+
61
+ selector.fit(X_train, y_train, cv_folds=cv_folds)
62
+ print(selector.selected_features_)
63
+ ```
64
+
65
+ ### Model Training
66
+
67
+ ```python
68
+ from classifier_toolkit.model_training.hyper_parameter_tuning.tuner import Tuner
69
+
70
+ tuner = Tuner(
71
+ X=X_train, y=y_train,
72
+ model_name="lightgbm",
73
+ X_val=X_val, y_val=y_val,
74
+ search_method="bayesian",
75
+ n_trials=50,
76
+ optimization_metric="prauc",
77
+ )
78
+ result = tuner.tune()
79
+ best_model = result["best_model"]
80
+ ```
81
+
82
+ ## Documentation Structure
83
+
84
+ - **Guides**: Conceptual explanations and usage examples for each module
85
+ - **API Reference**: Auto-generated documentation for all classes and functions
86
+ - **Examples**: End-to-end notebooks and worked examples
87
+
88
+ ## Links
89
+
90
+ - [GitHub Repository](https://github.com/qonto-private/classifier-toolkit)
91
+ - [PyPI Package](https://pypi.org/project/classifier-toolkit/)
92
+ - [Issue Tracker](https://github.com/qonto-private/classifier-toolkit/issues)
@@ -0,0 +1,51 @@
1
+ # Model Training Overview
2
+
3
+ The Model Training module provides hyperparameter tuning for **CatBoost** and **LightGBM** classifiers. It handles the full tuning loop — parameter search, cross-validation, early stopping, and final model refit — so you can focus on defining the search space rather than boilerplate.
4
+
5
+ ## Components
6
+
7
+ ### [Tuner](tuner.md)
8
+
9
+ The `Tuner` class is the main entry point. It supports two search strategies:
10
+
11
+ - **Grid search** — exhaustive evaluation of all parameter combinations, with automatic filtering of invalid conditional parameter combinations (e.g. CatBoost `boosting_type="Ordered"` constraints)
12
+ - **Bayesian search** — Optuna-based intelligent sampling, with support for persistent studies and resumption across runs
13
+
14
+ Both strategies share the same interface and return a unified result object.
15
+
16
+ ## Key Features
17
+
18
+ - **Unified API** — same `Tuner` constructor and `.tune()` call for grid and Bayesian search, for both CatBoost and LightGBM
19
+ - **Validation modes** — holdout split (`X_val`/`y_val`) or k-fold CV (`cv_folds`), mutually exclusive
20
+ - **Automatic final refit** — the winning model is retrained on all data (train + val), with tree count pinned to the mean `best_iteration` across CV folds to avoid over-training
21
+ - **Conditional parameter handling** — invalid combinations (e.g. `subsample` with `bootstrap_type="Bayesian"`) are filtered automatically; no trial is wasted
22
+ - **Secondary test set** — pass `X_test_v2`/`y_test_v2` to evaluate on a sub-population (e.g. a product segment) alongside the primary test set
23
+ - **Parallel trials** — `parallel_trials > 1` runs grid trials concurrently via `ThreadPoolExecutor`
24
+
25
+ ## Quick Example
26
+
27
+ ```python
28
+ from classifier_toolkit.model_training.hyper_parameter_tuning.tuner import Tuner
29
+
30
+ tuner = Tuner(
31
+ X=X_train, y=y_train,
32
+ model_name="lightgbm",
33
+ X_val=X_val, y_val=y_val,
34
+ X_test=X_test, y_test=y_test,
35
+ search_method="grid",
36
+ grid_param_values={
37
+ "learning_rate": [0.05, 0.1],
38
+ "num_leaves": [31, 63],
39
+ "max_depth": [6, 8],
40
+ },
41
+ optimization_metric="prauc",
42
+ )
43
+ result = tuner.tune()
44
+
45
+ best_model = result["best_model"]
46
+ best_params = result["best_params"]
47
+ best_score = result["best_score"]
48
+ test_metrics = result.get("test_metrics")
49
+ ```
50
+
51
+ See the [Tuner guide](tuner.md) for full parameter documentation, Bayesian search examples, and the complete result object schema.