classifier-toolkit 0.2.6__tar.gz → 0.3.0__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 (209) hide show
  1. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/.github/workflows/checks.yaml +1 -1
  2. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/PKG-INFO +1 -1
  3. classifier_toolkit-0.3.0/classifier_toolkit/data_partition/__init__.py +19 -0
  4. classifier_toolkit-0.3.0/classifier_toolkit/data_partition/data_preprocess.py +152 -0
  5. classifier_toolkit-0.3.0/classifier_toolkit/data_partition/optimize_data.py +47 -0
  6. classifier_toolkit-0.3.0/classifier_toolkit/data_partition/split_train_test.py +785 -0
  7. classifier_toolkit-0.3.0/classifier_toolkit/explainability/__init__.py +41 -0
  8. classifier_toolkit-0.3.0/classifier_toolkit/explainability/base.py +60 -0
  9. classifier_toolkit-0.3.0/classifier_toolkit/explainability/interactions.py +138 -0
  10. classifier_toolkit-0.3.0/classifier_toolkit/explainability/misclassification.py +107 -0
  11. classifier_toolkit-0.3.0/classifier_toolkit/explainability/plots.py +140 -0
  12. classifier_toolkit-0.3.0/classifier_toolkit/explainability/toolkit.py +137 -0
  13. classifier_toolkit-0.3.0/classifier_toolkit/explainability/tree_explainer.py +136 -0
  14. classifier_toolkit-0.3.0/docs/data_partition/data_preprocess.md +43 -0
  15. classifier_toolkit-0.3.0/docs/data_partition/optimize_data.md +30 -0
  16. classifier_toolkit-0.3.0/docs/data_partition/overview.md +30 -0
  17. classifier_toolkit-0.3.0/docs/data_partition/split_train_test.md +43 -0
  18. classifier_toolkit-0.3.0/docs/explainability/interactions.md +48 -0
  19. classifier_toolkit-0.3.0/docs/explainability/misclassification.md +46 -0
  20. classifier_toolkit-0.3.0/docs/explainability/overview.md +87 -0
  21. classifier_toolkit-0.3.0/docs/explainability/plots.md +47 -0
  22. classifier_toolkit-0.3.0/docs/explainability/toolkit.md +59 -0
  23. classifier_toolkit-0.3.0/docs/explainability/tree_explainer.md +50 -0
  24. classifier_toolkit-0.3.0/docs/reference/data_partition/data_preprocess.md +46 -0
  25. classifier_toolkit-0.3.0/docs/reference/data_partition/optimize_data.md +36 -0
  26. classifier_toolkit-0.3.0/docs/reference/data_partition/overview.md +37 -0
  27. classifier_toolkit-0.3.0/docs/reference/data_partition/split_train_test.md +57 -0
  28. classifier_toolkit-0.3.0/docs/reference/explainability/interactions.md +7 -0
  29. classifier_toolkit-0.3.0/docs/reference/explainability/misclassification.md +3 -0
  30. classifier_toolkit-0.3.0/docs/reference/explainability/overview.md +42 -0
  31. classifier_toolkit-0.3.0/docs/reference/explainability/plots.md +7 -0
  32. classifier_toolkit-0.3.0/docs/reference/explainability/toolkit.md +3 -0
  33. classifier_toolkit-0.3.0/docs/reference/explainability/tree_explainer.md +7 -0
  34. classifier_toolkit-0.3.0/examples/selected_features.json +189 -0
  35. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/mkdocs.yml +19 -0
  36. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/pyproject.toml +1 -1
  37. classifier_toolkit-0.3.0/tests/data_partition/test_data_preprocess.py +167 -0
  38. classifier_toolkit-0.3.0/tests/data_partition/test_optimize_data.py +78 -0
  39. classifier_toolkit-0.3.0/tests/data_partition/test_split_train_test.py +122 -0
  40. classifier_toolkit-0.3.0/tests/eda/__init__.py +0 -0
  41. classifier_toolkit-0.3.0/tests/explainability/__init__.py +0 -0
  42. classifier_toolkit-0.3.0/tests/explainability/test_catboost_e2e.py +120 -0
  43. classifier_toolkit-0.3.0/tests/explainability/test_misclassification.py +63 -0
  44. classifier_toolkit-0.3.0/tests/explainability/test_plots.py +70 -0
  45. classifier_toolkit-0.3.0/tests/explainability/test_smoke.py +23 -0
  46. classifier_toolkit-0.3.0/tests/explainability/test_toolkit.py +58 -0
  47. classifier_toolkit-0.3.0/tests/explainability/test_tree_explainer.py +50 -0
  48. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/uv.lock +1 -1
  49. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/.github/pull_request_template/default.md +0 -0
  50. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/.github/workflows/docs.yml +0 -0
  51. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/.github/workflows/master.yaml +0 -0
  52. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/.github/workflows/release.yaml +0 -0
  53. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/.github/workflows/working-branch.yaml +0 -0
  54. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/.gitignore +0 -0
  55. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/.python-version +0 -0
  56. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/.sqlfluff +0 -0
  57. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/LICENSE +0 -0
  58. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/Makefile +0 -0
  59. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/README.md +0 -0
  60. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/eda/__init__.py +0 -0
  61. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/eda/bivariate_analysis.py +0 -0
  62. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/eda/eda_toolkit.py +0 -0
  63. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/eda/feature_engineering.py +0 -0
  64. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/eda/first_glance.py +0 -0
  65. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/eda/univariate_analysis.py +0 -0
  66. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/eda/visualizations.py +0 -0
  67. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/eda/warnings/__init__.py +0 -0
  68. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/eda/warnings/automated_warnings.py +0 -0
  69. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/eda/warnings/default_warnings.py +0 -0
  70. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_reduction/__init__.py +0 -0
  71. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_reduction/base.py +0 -0
  72. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_reduction/correlation.py +0 -0
  73. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_reduction/counter_intuitive.py +0 -0
  74. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_reduction/drift.py +0 -0
  75. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_reduction/expert_rules.py +0 -0
  76. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_reduction/low_variance.py +0 -0
  77. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_reduction/predictive_power.py +0 -0
  78. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_reduction/reducer.py +0 -0
  79. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/__init__.py +0 -0
  80. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/base.py +0 -0
  81. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/embedded_methods/__init__.py +0 -0
  82. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/embedded_methods/elastic_net.py +0 -0
  83. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/feature_stability.py +0 -0
  84. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/meta_selector.py +0 -0
  85. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/utils/__init__.py +0 -0
  86. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/utils/data_handling.py +0 -0
  87. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/utils/feature_type_constraints.py +0 -0
  88. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/utils/plottings.py +0 -0
  89. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/utils/scoring.py +0 -0
  90. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/wrapper_methods/__init__.py +0 -0
  91. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/wrapper_methods/bayesian_search.py +0 -0
  92. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/wrapper_methods/boruta.py +0 -0
  93. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/wrapper_methods/combination_search.py +0 -0
  94. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/wrapper_methods/recursive_feature_eliminator.py +0 -0
  95. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/wrapper_methods/rfe.py +0 -0
  96. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/wrapper_methods/rfe_catboost.py +0 -0
  97. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/feature_selection/wrapper_methods/sequential_selection.py +0 -0
  98. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/model_training/__init__.py +0 -0
  99. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/model_training/hyper_parameter_tuning/__init__.py +0 -0
  100. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/model_training/hyper_parameter_tuning/tuner.py +0 -0
  101. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/model_training/models/__init__.py +0 -0
  102. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/model_training/models/base.py +0 -0
  103. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/model_training/models/ensemble_methods.py +0 -0
  104. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/model_training/utils/__init__.py +0 -0
  105. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/classifier_toolkit/model_training/utils/params.py +0 -0
  106. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/changelog.md +0 -0
  107. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/eda/bivariate_analysis.md +0 -0
  108. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/eda/eda_toolkit.md +0 -0
  109. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/eda/feature_engineering.md +0 -0
  110. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/eda/first_glance.md +0 -0
  111. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/eda/overview.md +0 -0
  112. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/eda/univariate_analysis.md +0 -0
  113. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/eda/visualizations.md +0 -0
  114. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/eda/warnings/default_warnings.md +0 -0
  115. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/eda/warnings/warning_system.md +0 -0
  116. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/examples/eda_example.md +0 -0
  117. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/examples/feature_selection_advanced.md +0 -0
  118. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/examples/feature_selection_example.md +0 -0
  119. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_reduction/correlation.md +0 -0
  120. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_reduction/counter_intuitive.md +0 -0
  121. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_reduction/drift.md +0 -0
  122. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_reduction/expert_rules.md +0 -0
  123. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_reduction/low_variance.md +0 -0
  124. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_reduction/overview.md +0 -0
  125. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_reduction/predictive_power.md +0 -0
  126. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_reduction/reducer.md +0 -0
  127. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_selection/embedded_methods/elastic_net.md +0 -0
  128. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_selection/feature_stability.md +0 -0
  129. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_selection/meta_selector.md +0 -0
  130. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_selection/overview.md +0 -0
  131. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_selection/utils/data_handling.md +0 -0
  132. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_selection/utils/scoring.md +0 -0
  133. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_selection/wrapper_methods/bayesian_search.md +0 -0
  134. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_selection/wrapper_methods/boruta.md +0 -0
  135. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_selection/wrapper_methods/combination_search.md +0 -0
  136. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_selection/wrapper_methods/recursive_feature_eliminator.md +0 -0
  137. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_selection/wrapper_methods/rfe.md +0 -0
  138. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/feature_selection/wrapper_methods/sequential_selection.md +0 -0
  139. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/index.md +0 -0
  140. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/model_training/tuner.md +0 -0
  141. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/eda/bivariate_analysis.md +0 -0
  142. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/eda/eda_toolkit.md +0 -0
  143. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/eda/feature_engineering.md +0 -0
  144. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/eda/first_glance.md +0 -0
  145. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/eda/overview.md +0 -0
  146. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/eda/univariate_analysis.md +0 -0
  147. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/eda/visualizations.md +0 -0
  148. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/eda/warnings/default_warnings.md +0 -0
  149. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/eda/warnings/warning_system.md +0 -0
  150. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_reduction/base.md +0 -0
  151. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_reduction/correlation.md +0 -0
  152. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_reduction/counter_intuitive.md +0 -0
  153. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_reduction/drift.md +0 -0
  154. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_reduction/expert_rules.md +0 -0
  155. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_reduction/low_variance.md +0 -0
  156. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_reduction/overview.md +0 -0
  157. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_reduction/predictive_power.md +0 -0
  158. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_reduction/reducer.md +0 -0
  159. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_selection/base.md +0 -0
  160. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_selection/embedded_methods/elastic_net.md +0 -0
  161. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_selection/feature_stability.md +0 -0
  162. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_selection/meta_selector.md +0 -0
  163. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_selection/overview.md +0 -0
  164. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_selection/utils/data_handling.md +0 -0
  165. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_selection/utils/plottings.md +0 -0
  166. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_selection/utils/scoring.md +0 -0
  167. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_selection/wrapper_methods/bayesian_search.md +0 -0
  168. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_selection/wrapper_methods/boruta.md +0 -0
  169. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_selection/wrapper_methods/combination_search.md +0 -0
  170. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_selection/wrapper_methods/recursive_feature_eliminator.md +0 -0
  171. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_selection/wrapper_methods/rfe.md +0 -0
  172. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/feature_selection/wrapper_methods/sequential_selection.md +0 -0
  173. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/model_training/params.md +0 -0
  174. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/reference/tuner/tuner.md +0 -0
  175. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/docs/stylesheets/extra.css +0 -0
  176. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/examples/__init__.py +0 -0
  177. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/examples/example.py +0 -0
  178. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/main.py +0 -0
  179. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/notebooks/paylater_removed.json +0 -0
  180. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/ruff.toml +0 -0
  181. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/__init__.py +0 -0
  182. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/conftest.py +0 -0
  183. {classifier_toolkit-0.2.6/tests/eda → classifier_toolkit-0.3.0/tests/data_partition}/__init__.py +0 -0
  184. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/eda/test_bivariate_analysis.py +0 -0
  185. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/eda/test_feature_engineering.py +0 -0
  186. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/eda/test_first_glance.py +0 -0
  187. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/eda/test_univariate_analysis.py +0 -0
  188. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/eda/test_visualizations.py +0 -0
  189. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/eda/test_warnings.py +0 -0
  190. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_reduction/__init__.py +0 -0
  191. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_reduction/test_correlation.py +0 -0
  192. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_reduction/test_counter_intuitive.py +0 -0
  193. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_reduction/test_drift.py +0 -0
  194. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_reduction/test_expert_rules.py +0 -0
  195. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_reduction/test_low_variance.py +0 -0
  196. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_reduction/test_predictive_power.py +0 -0
  197. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_reduction/test_reducer.py +0 -0
  198. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_reduction/test_smoke.py +0 -0
  199. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_selection/__init__.py +0 -0
  200. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_selection/test_bayesian_search.py +0 -0
  201. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_selection/test_boruta.py +0 -0
  202. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_selection/test_combination_search.py +0 -0
  203. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_selection/test_elastic_net.py +0 -0
  204. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_selection/test_feature_stability.py +0 -0
  205. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_selection/test_recursive_feature_eliminator.py +0 -0
  206. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_selection/test_rfe.py +0 -0
  207. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_selection/test_rfe_catboost.py +0 -0
  208. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_selection/test_scoring.py +0 -0
  209. {classifier_toolkit-0.2.6 → classifier_toolkit-0.3.0}/tests/feature_selection/test_sequential_selection.py +0 -0
@@ -97,7 +97,7 @@ jobs:
97
97
  strategy:
98
98
  fail-fast: false
99
99
  matrix:
100
- test-group: [eda, feature_selection, feature_reduction]
100
+ test-group: [eda, feature_selection, feature_reduction, data_partition]
101
101
  steps:
102
102
  - uses: actions/checkout@v6
103
103
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: classifier-toolkit
3
- Version: 0.2.6
3
+ Version: 0.3.0
4
4
  Project-URL: Documentation, http://classifier-toolkit.gh-pages.qonto.co/
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
@@ -0,0 +1,19 @@
1
+ from .data_preprocess import (
2
+ filter_default_observations_greedy,
3
+ filter_default_observations_priority,
4
+ )
5
+ from .optimize_data import optimize_dataframe_dtypes
6
+ from .split_train_test import (
7
+ split_data_by_date,
8
+ split_data_recent_orgs,
9
+ split_data_stratified_by_org,
10
+ )
11
+
12
+ __all__ = [
13
+ "filter_default_observations_greedy",
14
+ "filter_default_observations_priority",
15
+ "optimize_dataframe_dtypes",
16
+ "split_data_by_date",
17
+ "split_data_recent_orgs",
18
+ "split_data_stratified_by_org",
19
+ ]
@@ -0,0 +1,152 @@
1
+ import pandas as pd
2
+
3
+
4
+ def _filter_org_with_dedup(group, date_col, label_col, dedup_fn):
5
+ group = group.sort_values(date_col)
6
+ has_default = (group[label_col] == 1).any()
7
+
8
+ if not has_default:
9
+ return dedup_fn(group)
10
+
11
+ first_default_date = group.loc[group[label_col] == 1, date_col].min()
12
+ before = group[group[date_col] < first_default_date]
13
+ at_first = group[group[date_col] == first_default_date]
14
+ after = group[(group[date_col] > first_default_date) & (group[label_col] == 1)]
15
+
16
+ return pd.concat(
17
+ [dedup_fn(before), at_first, dedup_fn(after, ref_date=first_default_date)]
18
+ )
19
+
20
+
21
+ def filter_default_observations_priority(
22
+ df,
23
+ org_id_col="org_id",
24
+ date_col="observation_date",
25
+ label_col="default_label",
26
+ priority_col="label",
27
+ priority_value="paylater",
28
+ min_days=7,
29
+ ):
30
+ """
31
+ Filter a dataset based on default events, then deduplicate by minimum time gap.
32
+
33
+ Two sequential filters are applied per organization:
34
+
35
+ 1st filter — default event logic:
36
+ - No default events (default_label=1): keep all records.
37
+ - Has default events: keep all records before the first default date,
38
+ and only keep default_label=1 records on/after the first default date.
39
+
40
+ 2nd filter — deduplication:
41
+ - Enforce a minimum gap of min_days between consecutive kept rows.
42
+ - When two rows are within min_days of each other, keep the one whose
43
+ priority_col equals priority_value ("paylater" beats "SDD").
44
+ If both or neither have priority, keep the earlier row.
45
+
46
+ Parameters:
47
+ -----------
48
+ df : pandas.DataFrame
49
+ org_id_col : str, default='org_id'
50
+ date_col : str, default='observation_date'
51
+ label_col : str, default='default_label'
52
+ Binary default indicator (1=default, 0=no default).
53
+ priority_col : str, default='label'
54
+ Column used to break ties during deduplication. Contains "paylater" or "SDD".
55
+ priority_value : str, default='paylater'
56
+ Value in priority_col that takes precedence when two rows are within min_days.
57
+ min_days : int, default=7
58
+ Minimum number of days required between consecutive kept rows.
59
+
60
+ Returns:
61
+ --------
62
+ pandas.DataFrame
63
+ """
64
+
65
+ def _dedup(group, ref_date=None):
66
+ kept_indices = []
67
+ kept_has_priority = []
68
+ last_date = ref_date
69
+
70
+ for row in group.itertuples():
71
+ date = getattr(row, date_col)
72
+ has_priority = getattr(row, priority_col) == priority_value
73
+
74
+ if last_date is None or (date - last_date).days >= min_days:
75
+ kept_indices.append(row.Index)
76
+ kept_has_priority.append(has_priority)
77
+ last_date = date
78
+ elif kept_indices and has_priority and not kept_has_priority[-1]:
79
+ # Current row wins — replace the last kept row
80
+ kept_indices[-1] = row.Index
81
+ kept_has_priority[-1] = True
82
+ last_date = date
83
+ # else: keep the already-kept row (same priority or earlier wins)
84
+
85
+ return group.loc[kept_indices]
86
+
87
+ df_copy = df.copy()
88
+ df_copy[date_col] = pd.to_datetime(df_copy[date_col])
89
+
90
+ return (
91
+ df_copy.groupby(org_id_col, group_keys=False)
92
+ .apply(lambda g: _filter_org_with_dedup(g, date_col, label_col, _dedup))
93
+ .reset_index(drop=True)
94
+ )
95
+
96
+
97
+ def filter_default_observations_greedy(
98
+ df,
99
+ org_id_col="org_id",
100
+ date_col="observation_date",
101
+ label_col="default_label",
102
+ min_days=7,
103
+ ):
104
+ """
105
+ Filter a dataset based on default events with a minimum gap between observations.
106
+
107
+ For each organization:
108
+ - If there are no default events (label=1), keep all records where consecutive
109
+ observation dates are at least min_days apart.
110
+ - If there are default events:
111
+ - Keep records before the first default date, enforcing min_days gap.
112
+ - Always include the first default date record (ignores min_days rule).
113
+ - Keep only default=1 records after the first default date, enforcing
114
+ min_days gap measured from the first default date onward.
115
+
116
+ Parameters:
117
+ -----------
118
+ df : pandas.DataFrame
119
+ The input dataframe containing organization data
120
+ org_id_col : str, default='org_id'
121
+ Column name for organization identifier
122
+ date_col : str, default='observation_date'
123
+ Column name for observation date
124
+ label_col : str, default='default_label'
125
+ Column name for default label (1=default, 0=no default)
126
+ min_days : int, default=7
127
+ Minimum number of days required between consecutive kept records
128
+
129
+ Returns:
130
+ --------
131
+ pandas.DataFrame
132
+ Filtered dataframe according to the specified rules
133
+ """
134
+
135
+ def _dedup(group, ref_date=None):
136
+ kept_indices = []
137
+ last_date = ref_date
138
+ for row in group.itertuples():
139
+ date = getattr(row, date_col)
140
+ if last_date is None or (date - last_date).days >= min_days:
141
+ kept_indices.append(row.Index)
142
+ last_date = date
143
+ return group.loc[kept_indices]
144
+
145
+ df_copy = df.copy()
146
+ df_copy[date_col] = pd.to_datetime(df_copy[date_col])
147
+
148
+ return (
149
+ df_copy.groupby(org_id_col, group_keys=False)
150
+ .apply(lambda g: _filter_org_with_dedup(g, date_col, label_col, _dedup))
151
+ .reset_index(drop=True)
152
+ )
@@ -0,0 +1,47 @@
1
+ from collections import defaultdict
2
+
3
+ import pandas as pd
4
+
5
+
6
+ def optimize_dataframe_dtypes(df, categorical_threshold=0.5, verbose=True):
7
+ """
8
+ Optimize DataFrame data types to reduce memory usage.
9
+
10
+ Parameters:
11
+ - df: pandas DataFrame to optimize
12
+ - categorical_threshold: Convert object columns to category if unique ratio < threshold
13
+ - verbose: Print optimization details
14
+
15
+ Returns:
16
+ - Optimized DataFrame
17
+ - Dictionary mapping dtype names to lists of converted columns, plus
18
+ 'memory_before_mb' and 'memory_after_mb' float entries
19
+ """
20
+ df_opt = df.copy()
21
+ optimizations = defaultdict(list)
22
+
23
+ for col in df_opt.select_dtypes(include=["int64"]).columns:
24
+ if df_opt[col].isnull().any():
25
+ continue
26
+ downcast = "unsigned" if df_opt[col].min() >= 0 else "integer"
27
+ df_opt[col] = pd.to_numeric(df_opt[col], downcast=downcast)
28
+ optimizations[str(df_opt[col].dtype)].append(col)
29
+
30
+ n = len(df_opt)
31
+ for col in df_opt.select_dtypes(include=["object"]).columns:
32
+ if df_opt[col].nunique() / n < categorical_threshold:
33
+ df_opt[col] = df_opt[col].astype("category")
34
+ optimizations["category"].append(col)
35
+
36
+ mb_before = df.memory_usage(deep=True).sum() / 1024**2
37
+ mb_after = df_opt.memory_usage(deep=True).sum() / 1024**2
38
+ optimizations["memory_before_mb"] = mb_before
39
+ optimizations["memory_after_mb"] = mb_after
40
+
41
+ if verbose:
42
+ print(f"Memory reduced from {mb_before:.2f} MB to {mb_after:.2f} MB")
43
+ print(
44
+ f"Savings: {mb_before - mb_after:.2f} MB ({(mb_before - mb_after) / mb_before * 100:.1f}%)"
45
+ )
46
+
47
+ return df_opt, optimizations