classifier-toolkit 0.5.0__tar.gz → 0.5.1__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 (157) hide show
  1. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/PKG-INFO +1 -1
  2. classifier_toolkit-0.5.1/classifier_toolkit/_typing.py +6 -0
  3. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/calibration/ovr_calibration.py +1 -2
  4. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/calibration/reliability.py +1 -1
  5. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/eda/eda_toolkit.py +3 -1
  6. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/eda/visualizations.py +4 -2
  7. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/explainability/base.py +5 -3
  8. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/explainability/misclassification.py +2 -1
  9. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/explainability/plots.py +2 -1
  10. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/explainability/toolkit.py +2 -1
  11. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/explainability/tree_explainer.py +3 -2
  12. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_reduction/correlation.py +227 -77
  13. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_reduction/counter_intuitive.py +4 -3
  14. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_reduction/reducer.py +24 -3
  15. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/utils/scoring.py +4 -2
  16. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/wrapper_methods/combination_search.py +1 -1
  17. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/wrapper_methods/recursive_feature_eliminator.py +97 -13
  18. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/wrapper_methods/rfe.py +3 -2
  19. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/model_training/hyper_parameter_tuning/tuner.py +71 -11
  20. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/model_training/models/ensemble_methods.py +3 -2
  21. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/model_validation/evaluator.py +56 -9
  22. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/risk_class/risk_classes_dp.py +4 -3
  23. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/examples/example_bayesian_search.ipynb +3 -3
  24. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/examples/example_recursive_feature_eliminator.ipynb +2 -1
  25. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/pyproject.toml +1 -1
  26. classifier_toolkit-0.5.1/tests/feature_reduction/test_correlation_missing.py +322 -0
  27. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_selection/test_recursive_feature_eliminator.py +187 -0
  28. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/model_training/hyper_parameter_tuning/test_tuner.py +164 -0
  29. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/model_validation/test_evaluator_multiclass.py +61 -0
  30. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/model_validation/test_print_risk_class_validation_report.py +27 -0
  31. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/risk_class/test_validate_risk_classes.py +9 -1
  32. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/.gitignore +0 -0
  33. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/LICENSE +0 -0
  34. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/README.md +0 -0
  35. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/calibration/__init__.py +0 -0
  36. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/calibration/base.py +0 -0
  37. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/data_partition/__init__.py +0 -0
  38. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/data_partition/data_preprocess.py +0 -0
  39. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/data_partition/optimize_data.py +0 -0
  40. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/data_partition/split_train_test.py +0 -0
  41. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/datasets/__init__.py +0 -0
  42. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/datasets/_demo.py +0 -0
  43. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/eda/__init__.py +0 -0
  44. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/eda/bivariate_analysis.py +0 -0
  45. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/eda/feature_engineering.py +0 -0
  46. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/eda/first_glance.py +0 -0
  47. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/eda/univariate_analysis.py +0 -0
  48. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/eda/warnings/__init__.py +0 -0
  49. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/eda/warnings/automated_warnings.py +0 -0
  50. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/eda/warnings/default_warnings.py +0 -0
  51. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/explainability/__init__.py +0 -0
  52. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/explainability/interactions.py +0 -0
  53. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_reduction/__init__.py +0 -0
  54. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_reduction/base.py +0 -0
  55. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_reduction/drift.py +0 -0
  56. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_reduction/expert_rules.py +0 -0
  57. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_reduction/low_variance.py +0 -0
  58. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_reduction/predictive_power.py +0 -0
  59. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/__init__.py +0 -0
  60. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/base.py +0 -0
  61. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/embedded_methods/__init__.py +0 -0
  62. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/embedded_methods/elastic_net.py +0 -0
  63. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/feature_stability.py +0 -0
  64. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/meta_selector.py +0 -0
  65. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/utils/__init__.py +0 -0
  66. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/utils/data_handling.py +0 -0
  67. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/utils/feature_type_constraints.py +0 -0
  68. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/utils/plottings.py +0 -0
  69. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/wrapper_methods/__init__.py +0 -0
  70. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/wrapper_methods/bayesian_search.py +0 -0
  71. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/wrapper_methods/boruta.py +0 -0
  72. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/wrapper_methods/rfe_catboost.py +0 -0
  73. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/feature_selection/wrapper_methods/sequential_selection.py +0 -0
  74. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/model_training/__init__.py +0 -0
  75. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/model_training/hyper_parameter_tuning/__init__.py +0 -0
  76. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/model_training/models/__init__.py +0 -0
  77. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/model_training/models/base.py +0 -0
  78. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/model_training/utils/__init__.py +0 -0
  79. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/model_training/utils/params.py +0 -0
  80. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/model_validation/__init__.py +0 -0
  81. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/model_validation/model_assessment.py +0 -0
  82. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/risk_class/__init__.py +0 -0
  83. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/classifier_toolkit/risk_class/risk_classes.py +0 -0
  84. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/examples/example_combination_feature_search.ipynb +0 -0
  85. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/examples/example_explainability_catboost.ipynb +0 -0
  86. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/examples/example_explainability_lgbm.ipynb +0 -0
  87. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/examples/example_feature_reduction.ipynb +0 -0
  88. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/examples/example_grid_search.ipynb +0 -0
  89. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/examples/example_model_training_catboost.ipynb +0 -0
  90. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/examples/example_model_training_lgbm.ipynb +0 -0
  91. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/examples/example_model_validation.ipynb +0 -0
  92. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/examples/example_risk_classes_dp.ipynb +0 -0
  93. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/examples/example_train_test_partition.ipynb +0 -0
  94. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/__init__.py +0 -0
  95. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/calibration/__init__.py +0 -0
  96. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/calibration/test_ovr_calibration.py +0 -0
  97. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/calibration/test_reliability.py +0 -0
  98. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/conftest.py +0 -0
  99. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/data_partition/__init__.py +0 -0
  100. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/data_partition/test_data_preprocess.py +0 -0
  101. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/data_partition/test_optimize_data.py +0 -0
  102. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/data_partition/test_split_train_test.py +0 -0
  103. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/datasets/__init__.py +0 -0
  104. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/datasets/test_demo_data.py +0 -0
  105. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/eda/__init__.py +0 -0
  106. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/eda/test_bivariate_analysis.py +0 -0
  107. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/eda/test_feature_engineering.py +0 -0
  108. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/eda/test_first_glance.py +0 -0
  109. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/eda/test_univariate_analysis.py +0 -0
  110. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/eda/test_visualizations.py +0 -0
  111. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/eda/test_warnings.py +0 -0
  112. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/explainability/__init__.py +0 -0
  113. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/explainability/test_catboost_e2e.py +0 -0
  114. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/explainability/test_interactions.py +0 -0
  115. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/explainability/test_interactions_ranking.py +0 -0
  116. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/explainability/test_misclassification.py +0 -0
  117. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/explainability/test_multiclass_e2e.py +0 -0
  118. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/explainability/test_plots.py +0 -0
  119. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/explainability/test_smoke.py +0 -0
  120. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/explainability/test_toolkit.py +0 -0
  121. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/explainability/test_tree_explainer.py +0 -0
  122. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_reduction/__init__.py +0 -0
  123. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_reduction/test_correlation.py +0 -0
  124. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_reduction/test_correlation_tie_break.py +0 -0
  125. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_reduction/test_counter_intuitive.py +0 -0
  126. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_reduction/test_drift.py +0 -0
  127. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_reduction/test_expert_rules.py +0 -0
  128. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_reduction/test_low_variance.py +0 -0
  129. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_reduction/test_predictive_power.py +0 -0
  130. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_reduction/test_reducer.py +0 -0
  131. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_reduction/test_smoke.py +0 -0
  132. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_selection/__init__.py +0 -0
  133. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_selection/test_bayesian_search.py +0 -0
  134. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_selection/test_boruta.py +0 -0
  135. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_selection/test_combination_search.py +0 -0
  136. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_selection/test_elastic_net.py +0 -0
  137. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_selection/test_feature_stability.py +0 -0
  138. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_selection/test_rfe.py +0 -0
  139. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_selection/test_rfe_assessment.py +0 -0
  140. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_selection/test_rfe_catboost.py +0 -0
  141. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_selection/test_scoring.py +0 -0
  142. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/feature_selection/test_sequential_selection.py +0 -0
  143. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/model_training/__init__.py +0 -0
  144. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/model_training/hyper_parameter_tuning/__init__.py +0 -0
  145. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/model_training/hyper_parameter_tuning/test_params.py +0 -0
  146. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/model_training/models/__init__.py +0 -0
  147. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/model_training/models/test_ensemble_methods.py +0 -0
  148. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/model_validation/__init__.py +0 -0
  149. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/model_validation/test_compare_score_distributions.py +0 -0
  150. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/model_validation/test_evaluate_risk_classes_dp.py +0 -0
  151. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/model_validation/test_evaluator_threshold.py +0 -0
  152. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/model_validation/test_model_assessment.py +0 -0
  153. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/model_validation/test_print_full_validation_report.py +0 -0
  154. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/model_validation/test_score_distribution_psi.py +0 -0
  155. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/risk_class/__init__.py +0 -0
  156. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/risk_class/test_construct_bins_dp.py +0 -0
  157. {classifier_toolkit-0.5.0 → classifier_toolkit-0.5.1}/tests/risk_class/test_risk_classes.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: classifier-toolkit
3
- Version: 0.5.0
3
+ Version: 0.5.1
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
@@ -0,0 +1,6 @@
1
+ """Type aliases shared across the toolkit.""" # noqa: INP001
2
+
3
+ from typing import Union
4
+
5
+ #: A class label as found in ``y`` and ``model.classes_`` (e.g. ``pos_label``).
6
+ ClassLabel = Union[str, int]
@@ -14,10 +14,9 @@ from typing import Dict, Optional, Sequence, Union
14
14
 
15
15
  import numpy as np
16
16
 
17
+ from classifier_toolkit._typing import ClassLabel
17
18
  from classifier_toolkit.calibration.base import CalibrationError
18
19
 
19
- ClassLabel = Union[str, int]
20
-
21
20
 
22
21
  class OVRHistogramCalibrator:
23
22
  """Calibrate multiclass probabilities via One-vs-Rest histogram binning.
@@ -13,7 +13,7 @@ import matplotlib.pyplot as plt
13
13
  import numpy as np
14
14
  from sklearn.calibration import calibration_curve
15
15
 
16
- ClassLabel = Union[str, int]
16
+ from classifier_toolkit._typing import ClassLabel
17
17
 
18
18
 
19
19
  def plot_reliability_curves(
@@ -3,6 +3,8 @@ from typing import Any, Dict, List, Literal, Optional, Union
3
3
 
4
4
  import pandas as pd
5
5
 
6
+ from classifier_toolkit._typing import ClassLabel
7
+
6
8
  from .bivariate_analysis import BivariateAnalysis
7
9
  from .feature_engineering import FeatureEngineering
8
10
  from .first_glance import FirstGlance
@@ -49,7 +51,7 @@ class EDAToolkit:
49
51
  id_column: Optional[str] = None,
50
52
  to_be_enc: Optional[List[str]] = None,
51
53
  warning_system: Optional[WarningSystem] = None,
52
- pos_label: Optional[Union[str, int]] = None,
54
+ pos_label: Optional[ClassLabel] = None,
53
55
  ) -> None:
54
56
  """
55
57
  Initialize the EDAToolkit class with data and configuration settings.
@@ -1,7 +1,7 @@
1
1
  import colorsys
2
2
  import itertools
3
3
  import math
4
- from typing import List, Literal, Optional, Tuple, Union
4
+ from typing import List, Literal, Optional, Tuple
5
5
 
6
6
  import matplotlib.pyplot as plt
7
7
  import numpy as np
@@ -16,6 +16,8 @@ from sklearn.preprocessing import MinMaxScaler
16
16
  from statsmodels.stats.outliers_influence import variance_inflation_factor
17
17
  from tqdm import tqdm
18
18
 
19
+ from classifier_toolkit._typing import ClassLabel
20
+
19
21
  # The pos_label class is always drawn in this red; other classes cycle
20
22
  # through a palette with no reds/oranges, so it stays visually distinct.
21
23
  _POS_LABEL_COLOR = "#d62728"
@@ -39,7 +41,7 @@ class Visualizations:
39
41
  target_column: str,
40
42
  numerical_columns: List[str],
41
43
  categorical_columns: List[str],
42
- pos_label: Optional[Union[str, int]] = None,
44
+ pos_label: Optional[ClassLabel] = None,
43
45
  ) -> None:
44
46
  """
45
47
  Initialize the Visualizations class with data and configuration.
@@ -6,13 +6,15 @@ from typing import Any, Optional, Union
6
6
  import numpy as np
7
7
  import pandas as pd
8
8
 
9
+ from classifier_toolkit._typing import ClassLabel
10
+
9
11
 
10
12
  class ExplainabilityError(Exception):
11
13
  """Base exception for explainability errors."""
12
14
 
13
15
 
14
16
  def resolve_class_index(
15
- classes: Optional[np.ndarray], label: Union[str, int], missing_reason: str
17
+ classes: Optional[np.ndarray], label: ClassLabel, missing_reason: str
16
18
  ) -> int:
17
19
  """Resolve a class label to its index in ``classes``.
18
20
 
@@ -87,7 +89,7 @@ class ShapResult:
87
89
  """
88
90
  return self.values.ndim == 3 and self.values.shape[-1] > 2
89
91
 
90
- def class_index_for_label(self, label: Union[str, int]) -> int:
92
+ def class_index_for_label(self, label: ClassLabel) -> int:
91
93
  """Resolve a class label to its index along the trailing class axis.
92
94
 
93
95
  Raises
@@ -109,7 +111,7 @@ class ShapResult:
109
111
  return self.values[..., class_index]
110
112
  return self.values
111
113
 
112
- def values_for_label(self, label: Union[str, int]) -> np.ndarray:
114
+ def values_for_label(self, label: ClassLabel) -> np.ndarray:
113
115
  """Return a 2D SHAP matrix for the given class label.
114
116
 
115
117
  For binary results, ``label`` is ignored: the positive-class 2D matrix
@@ -7,6 +7,7 @@ from typing import Literal, Optional, Union
7
7
  import numpy as np
8
8
  import pandas as pd
9
9
 
10
+ from classifier_toolkit._typing import ClassLabel
10
11
  from classifier_toolkit.explainability.base import ExplainabilityError
11
12
  from classifier_toolkit.explainability.plots import plot_waterfall
12
13
  from classifier_toolkit.explainability.tree_explainer import TreeSHAPExplainer
@@ -80,7 +81,7 @@ class MisclassificationAnalyzer:
80
81
  explainer: TreeSHAPExplainer,
81
82
  feature_names: Sequence[str],
82
83
  threshold: float = 0.5,
83
- pos_label: Optional[Union[str, int]] = None,
84
+ pos_label: Optional[ClassLabel] = None,
84
85
  prediction_rule: Optional[PredictionRule] = None,
85
86
  ) -> None:
86
87
  if prediction_rule not in (None, "threshold", "argmax"):
@@ -9,6 +9,7 @@ import numpy as np
9
9
  import pandas as pd
10
10
  import shap
11
11
 
12
+ from classifier_toolkit._typing import ClassLabel
12
13
  from classifier_toolkit.explainability.base import ShapResult
13
14
 
14
15
 
@@ -54,7 +55,7 @@ def plot_summary(
54
55
 
55
56
  def plot_pos_label_summary(
56
57
  shap_result: ShapResult,
57
- pos_label: Union[str, int],
58
+ pos_label: ClassLabel,
58
59
  max_display: int = 20,
59
60
  show: bool = True,
60
61
  ) -> None:
@@ -6,6 +6,7 @@ from typing import Optional, Union
6
6
  import numpy as np
7
7
  import pandas as pd
8
8
 
9
+ from classifier_toolkit._typing import ClassLabel
9
10
  from classifier_toolkit.explainability.base import ExplainabilityError, ShapResult
10
11
  from classifier_toolkit.explainability.interactions import (
11
12
  analyze_shap_interactions,
@@ -53,7 +54,7 @@ class ExplainabilityToolkit:
53
54
  categorical_features: Optional[Sequence[str]] = None,
54
55
  cat_features: Optional[list[str]] = None,
55
56
  threshold: float = 0.5,
56
- pos_label: Optional[Union[str, int]] = None,
57
+ pos_label: Optional[ClassLabel] = None,
57
58
  prediction_rule: Optional[PredictionRule] = None,
58
59
  ) -> None:
59
60
  self.model = model
@@ -7,6 +7,7 @@ import numpy as np
7
7
  import pandas as pd
8
8
  import shap
9
9
 
10
+ from classifier_toolkit._typing import ClassLabel
10
11
  from classifier_toolkit.explainability.base import (
11
12
  ExplainabilityError,
12
13
  ShapResult,
@@ -92,7 +93,7 @@ class TreeSHAPExplainer:
92
93
  classes = getattr(self.model, "classes_", None)
93
94
  return np.asarray(classes) if classes is not None else None
94
95
 
95
- def class_index_for_label(self, label: Union[str, int]) -> int:
96
+ def class_index_for_label(self, label: ClassLabel) -> int:
96
97
  """Resolve a class label to its index along the trailing class axis.
97
98
 
98
99
  Raises
@@ -167,7 +168,7 @@ class TreeSHAPExplainer:
167
168
  def explain_observation_for_label(
168
169
  self,
169
170
  X: Union[pd.DataFrame, pd.Series],
170
- label: Union[str, int],
171
+ label: ClassLabel,
171
172
  ):
172
173
  """Single-row SHAP explanation restricted to one class (waterfall-ready).
173
174