wavetrainer 0.1.8__tar.gz → 0.1.10__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 (68) hide show
  1. {wavetrainer-0.1.8/wavetrainer.egg-info → wavetrainer-0.1.10}/PKG-INFO +3 -1
  2. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/README.md +1 -0
  3. wavetrainer-0.1.8/wavetrainer.egg-info/requires.txt → wavetrainer-0.1.10/requirements.txt +1 -0
  4. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/setup.py +1 -1
  5. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/__init__.py +1 -1
  6. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/calibrator/calibrator_router.py +31 -1
  7. {wavetrainer-0.1.8 → wavetrainer-0.1.10/wavetrainer.egg-info}/PKG-INFO +3 -1
  8. wavetrainer-0.1.8/requirements.txt → wavetrainer-0.1.10/wavetrainer.egg-info/requires.txt +2 -1
  9. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/LICENSE +0 -0
  10. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/MANIFEST.in +0 -0
  11. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/setup.cfg +0 -0
  12. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/tests/__init__.py +0 -0
  13. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/tests/model/__init__.py +0 -0
  14. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/tests/model/catboost_kwargs_test.py +0 -0
  15. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/tests/trainer_test.py +0 -0
  16. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/calibrator/__init__.py +0 -0
  17. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/calibrator/calibrator.py +0 -0
  18. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/calibrator/vennabers_calibrator.py +0 -0
  19. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/create.py +0 -0
  20. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/exceptions.py +0 -0
  21. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/fit.py +0 -0
  22. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/model/__init__.py +0 -0
  23. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/model/catboost/__init__.py +0 -0
  24. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/model/catboost/catboost_classifier_wrap.py +0 -0
  25. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/model/catboost/catboost_kwargs.py +0 -0
  26. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/model/catboost/catboost_model.py +0 -0
  27. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/model/catboost/catboost_regressor_wrap.py +0 -0
  28. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/model/model.py +0 -0
  29. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/model/model_router.py +0 -0
  30. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/model/tabpfn/__init__.py +0 -0
  31. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/model/tabpfn/tabpfn_model.py +0 -0
  32. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/model/xgboost/__init__.py +0 -0
  33. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/model/xgboost/early_stopper.py +0 -0
  34. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/model/xgboost/xgboost_logger.py +0 -0
  35. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/model/xgboost/xgboost_model.py +0 -0
  36. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/model_type.py +0 -0
  37. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/params.py +0 -0
  38. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/reducer/__init__.py +0 -0
  39. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/reducer/base_selector_reducer.py +0 -0
  40. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/reducer/combined_reducer.py +0 -0
  41. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/reducer/constant_reducer.py +0 -0
  42. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/reducer/correlation_reducer.py +0 -0
  43. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/reducer/duplicate_reducer.py +0 -0
  44. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/reducer/non_categorical_numeric_columns.py +0 -0
  45. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/reducer/nonnumeric_reducer.py +0 -0
  46. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/reducer/pca_reducer.py +0 -0
  47. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/reducer/reducer.py +0 -0
  48. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/reducer/select_by_single_feature_performance_reducer.py +0 -0
  49. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/reducer/smart_correlation_reducer.py +0 -0
  50. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/reducer/unseen_reducer.py +0 -0
  51. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/selector/__init__.py +0 -0
  52. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/selector/selector.py +0 -0
  53. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/trainer.py +0 -0
  54. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/weights/__init__.py +0 -0
  55. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/weights/class_weights.py +0 -0
  56. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/weights/combined_weights.py +0 -0
  57. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/weights/exponential_weights.py +0 -0
  58. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/weights/linear_weights.py +0 -0
  59. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/weights/noop_weights.py +0 -0
  60. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/weights/sigmoid_weights.py +0 -0
  61. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/weights/weights.py +0 -0
  62. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/weights/weights_router.py +0 -0
  63. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/windower/__init__.py +0 -0
  64. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer/windower/windower.py +0 -0
  65. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer.egg-info/SOURCES.txt +0 -0
  66. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer.egg-info/dependency_links.txt +0 -0
  67. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer.egg-info/not-zip-safe +0 -0
  68. {wavetrainer-0.1.8 → wavetrainer-0.1.10}/wavetrainer.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wavetrainer
3
- Version: 0.1.8
3
+ Version: 0.1.10
4
4
  Summary: A library for automatically finding the optimal model within feature and hyperparameter space.
5
5
  Home-page: https://github.com/8W9aG/wavetrainer
6
6
  Author: Will Sackfield
@@ -28,6 +28,7 @@ Requires-Dist: xgboost>=3.0.0
28
28
  Requires-Dist: jax>=0.6.1
29
29
  Requires-Dist: tabpfn_extensions>=0.0.4
30
30
  Requires-Dist: hyperopt>=0.2.7
31
+ Requires-Dist: pycaleva>=0.8.2
31
32
 
32
33
  # wavetrainer
33
34
 
@@ -62,6 +63,7 @@ Python 3.11.6:
62
63
  - [jax](https://github.com/jax-ml/jax)
63
64
  - [tabpfn_extensions](https://github.com/PriorLabs/tabpfn-extensions)
64
65
  - [hyperopt](https://github.com/hyperopt/hyperopt)
66
+ - [pycaleva](https://github.com/MartinWeigl/pycaleva)
65
67
 
66
68
  ## Raison D'être :thought_balloon:
67
69
 
@@ -31,6 +31,7 @@ Python 3.11.6:
31
31
  - [jax](https://github.com/jax-ml/jax)
32
32
  - [tabpfn_extensions](https://github.com/PriorLabs/tabpfn-extensions)
33
33
  - [hyperopt](https://github.com/hyperopt/hyperopt)
34
+ - [pycaleva](https://github.com/MartinWeigl/pycaleva)
34
35
 
35
36
  ## Raison D'être :thought_balloon:
36
37
 
@@ -15,3 +15,4 @@ xgboost>=3.0.0
15
15
  jax>=0.6.1
16
16
  tabpfn_extensions>=0.0.4
17
17
  hyperopt>=0.2.7
18
+ pycaleva>=0.8.2
@@ -23,7 +23,7 @@ def install_requires() -> typing.List[str]:
23
23
 
24
24
  setup(
25
25
  name='wavetrainer',
26
- version='0.1.8',
26
+ version='0.1.10',
27
27
  description='A library for automatically finding the optimal model within feature and hyperparameter space.',
28
28
  long_description=long_description,
29
29
  long_description_content_type='text/markdown',
@@ -2,5 +2,5 @@
2
2
 
3
3
  from .create import create
4
4
 
5
- __VERSION__ = "0.1.8"
5
+ __VERSION__ = "0.1.10"
6
6
  __all__ = ("create",)
@@ -7,8 +7,9 @@ from typing import Self
7
7
 
8
8
  import optuna
9
9
  import pandas as pd
10
+ from pycaleva import CalibrationEvaluator # type: ignore
10
11
 
11
- from ..model.model import Model
12
+ from ..model.model import PROBABILITY_COLUMN_PREFIX, Model
12
13
  from ..model_type import ModelType, determine_model_type
13
14
  from .calibrator import Calibrator
14
15
  from .vennabers_calibrator import VennabersCalibrator
@@ -26,10 +27,12 @@ class CalibratorRouter(Calibrator):
26
27
  # pylint: disable=too-many-positional-arguments,too-many-arguments
27
28
 
28
29
  _calibrator: Calibrator | None
30
+ _ce: CalibrationEvaluator | None
29
31
 
30
32
  def __init__(self, model: Model):
31
33
  super().__init__(model)
32
34
  self._calibrator = None
35
+ self._ce = None
33
36
 
34
37
  @classmethod
35
38
  def name(cls) -> str:
@@ -75,6 +78,14 @@ class CalibratorRouter(Calibrator):
75
78
  },
76
79
  handle,
77
80
  )
81
+ ce = self._ce
82
+ if ce is not None:
83
+ try:
84
+ ce.calibration_report(
85
+ os.path.join(folder, "calibration.pdf"), "binary-classifier"
86
+ )
87
+ except ValueError as exc:
88
+ logging.warning(str(exc))
78
89
 
79
90
  def fit(
80
91
  self,
@@ -94,6 +105,25 @@ class CalibratorRouter(Calibrator):
94
105
  calibrator = VennabersCalibrator(self._model)
95
106
  calibrator.fit(df, y=y, w=w)
96
107
  self._calibrator = calibrator
108
+
109
+ pred_prob = calibrator.transform(df)
110
+ pred_prob = pred_prob.drop(
111
+ columns=[
112
+ x
113
+ for x in pred_prob.columns.values.tolist()
114
+ if not x.startswith(PROBABILITY_COLUMN_PREFIX)
115
+ ],
116
+ errors="ignore",
117
+ )
118
+ ce = CalibrationEvaluator(
119
+ y.to_numpy(),
120
+ pred_prob[PROBABILITY_COLUMN_PREFIX + str(0)].to_numpy(),
121
+ outsample=True,
122
+ n_groups="auto",
123
+ )
124
+ print(f"Hosmer Lemeshow: {ce.hosmerlemeshow()}")
125
+ self._ce = ce
126
+
97
127
  return self
98
128
 
99
129
  def transform(self, df: pd.DataFrame) -> pd.DataFrame:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wavetrainer
3
- Version: 0.1.8
3
+ Version: 0.1.10
4
4
  Summary: A library for automatically finding the optimal model within feature and hyperparameter space.
5
5
  Home-page: https://github.com/8W9aG/wavetrainer
6
6
  Author: Will Sackfield
@@ -28,6 +28,7 @@ Requires-Dist: xgboost>=3.0.0
28
28
  Requires-Dist: jax>=0.6.1
29
29
  Requires-Dist: tabpfn_extensions>=0.0.4
30
30
  Requires-Dist: hyperopt>=0.2.7
31
+ Requires-Dist: pycaleva>=0.8.2
31
32
 
32
33
  # wavetrainer
33
34
 
@@ -62,6 +63,7 @@ Python 3.11.6:
62
63
  - [jax](https://github.com/jax-ml/jax)
63
64
  - [tabpfn_extensions](https://github.com/PriorLabs/tabpfn-extensions)
64
65
  - [hyperopt](https://github.com/hyperopt/hyperopt)
66
+ - [pycaleva](https://github.com/MartinWeigl/pycaleva)
65
67
 
66
68
  ## Raison D'être :thought_balloon:
67
69
 
@@ -14,4 +14,5 @@ pytest-is-running>=1.5.1
14
14
  xgboost>=3.0.0
15
15
  jax>=0.6.1
16
16
  tabpfn_extensions>=0.0.4
17
- hyperopt>=0.2.7
17
+ hyperopt>=0.2.7
18
+ pycaleva>=0.8.2
File without changes
File without changes
File without changes