wavetrainer 0.1.12__tar.gz → 0.1.13__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 (70) hide show
  1. {wavetrainer-0.1.12/wavetrainer.egg-info → wavetrainer-0.1.13}/PKG-INFO +1 -1
  2. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/setup.py +1 -1
  3. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/__init__.py +1 -1
  4. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/model_router.py +11 -2
  5. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/trainer.py +13 -3
  6. {wavetrainer-0.1.12 → wavetrainer-0.1.13/wavetrainer.egg-info}/PKG-INFO +1 -1
  7. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/LICENSE +0 -0
  8. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/MANIFEST.in +0 -0
  9. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/README.md +0 -0
  10. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/requirements.txt +0 -0
  11. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/setup.cfg +0 -0
  12. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/tests/__init__.py +0 -0
  13. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/tests/model/__init__.py +0 -0
  14. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/tests/model/catboost_kwargs_test.py +0 -0
  15. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/tests/trainer_test.py +0 -0
  16. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/calibrator/__init__.py +0 -0
  17. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/calibrator/calibrator.py +0 -0
  18. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/calibrator/calibrator_router.py +0 -0
  19. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/calibrator/vennabers_calibrator.py +0 -0
  20. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/create.py +0 -0
  21. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/exceptions.py +0 -0
  22. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/fit.py +0 -0
  23. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/__init__.py +0 -0
  24. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/catboost/__init__.py +0 -0
  25. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/catboost/catboost_classifier_wrap.py +0 -0
  26. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/catboost/catboost_kwargs.py +0 -0
  27. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/catboost/catboost_model.py +0 -0
  28. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/catboost/catboost_regressor_wrap.py +0 -0
  29. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/lightgbm/__init__.py +0 -0
  30. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/lightgbm/lightgbm_model.py +0 -0
  31. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/model.py +0 -0
  32. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/tabpfn/__init__.py +0 -0
  33. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/tabpfn/tabpfn_model.py +0 -0
  34. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/xgboost/__init__.py +0 -0
  35. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/xgboost/early_stopper.py +0 -0
  36. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/xgboost/xgboost_logger.py +0 -0
  37. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/xgboost/xgboost_model.py +0 -0
  38. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model_type.py +0 -0
  39. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/params.py +0 -0
  40. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/__init__.py +0 -0
  41. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/base_selector_reducer.py +0 -0
  42. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/combined_reducer.py +0 -0
  43. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/constant_reducer.py +0 -0
  44. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/correlation_reducer.py +0 -0
  45. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/duplicate_reducer.py +0 -0
  46. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/non_categorical_numeric_columns.py +0 -0
  47. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/nonnumeric_reducer.py +0 -0
  48. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/pca_reducer.py +0 -0
  49. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/reducer.py +0 -0
  50. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/select_by_single_feature_performance_reducer.py +0 -0
  51. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/smart_correlation_reducer.py +0 -0
  52. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/unseen_reducer.py +0 -0
  53. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/selector/__init__.py +0 -0
  54. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/selector/selector.py +0 -0
  55. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/weights/__init__.py +0 -0
  56. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/weights/class_weights.py +0 -0
  57. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/weights/combined_weights.py +0 -0
  58. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/weights/exponential_weights.py +0 -0
  59. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/weights/linear_weights.py +0 -0
  60. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/weights/noop_weights.py +0 -0
  61. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/weights/sigmoid_weights.py +0 -0
  62. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/weights/weights.py +0 -0
  63. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/weights/weights_router.py +0 -0
  64. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/windower/__init__.py +0 -0
  65. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/windower/windower.py +0 -0
  66. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer.egg-info/SOURCES.txt +0 -0
  67. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer.egg-info/dependency_links.txt +0 -0
  68. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer.egg-info/not-zip-safe +0 -0
  69. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer.egg-info/requires.txt +0 -0
  70. {wavetrainer-0.1.12 → wavetrainer-0.1.13}/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.12
3
+ Version: 0.1.13
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
@@ -23,7 +23,7 @@ def install_requires() -> typing.List[str]:
23
23
 
24
24
  setup(
25
25
  name='wavetrainer',
26
- version='0.1.12',
26
+ version='0.1.13',
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.12"
5
+ __VERSION__ = "0.1.13"
6
6
  __all__ = ("create",)
@@ -35,13 +35,18 @@ class ModelRouter(Model):
35
35
  _model: Model | None
36
36
  _false_positive_reduction_steps: int | None
37
37
 
38
- def __init__(self, allowed_models: set[str] | None) -> None:
38
+ def __init__(
39
+ self,
40
+ allowed_models: set[str] | None,
41
+ max_false_positive_reduction_steps: int | None,
42
+ ) -> None:
39
43
  super().__init__()
40
44
  self._model = None
41
45
  self._false_positive_reduction_steps = None
42
46
  self._allowed_models = (
43
47
  allowed_models if allowed_models is not None else set(_MODELS.keys())
44
48
  )
49
+ self._max_false_positive_reduction_steps = max_false_positive_reduction_steps
45
50
 
46
51
  @classmethod
47
52
  def name(cls) -> str:
@@ -93,7 +98,11 @@ class ModelRouter(Model):
93
98
  self, trial: optuna.Trial | optuna.trial.FrozenTrial, df: pd.DataFrame
94
99
  ) -> None:
95
100
  self._false_positive_reduction_steps = trial.suggest_int(
96
- _FALSE_POSITIVE_REDUCTION_STEPS_KEY, 0, 5
101
+ _FALSE_POSITIVE_REDUCTION_STEPS_KEY,
102
+ 0,
103
+ 5
104
+ if self._max_false_positive_reduction_steps is None
105
+ else self._max_false_positive_reduction_steps,
97
106
  )
98
107
  model_name = trial.suggest_categorical(
99
108
  "model",
@@ -41,6 +41,7 @@ _TEST_SIZE_KEY = "test_size"
41
41
  _VALIDATION_SIZE_KEY = "validation_size"
42
42
  _IDX_USR_ATTR_KEY = "idx"
43
43
  _DT_COLUMN_KEY = "dt_column"
44
+ _MAX_FALSE_POSITIVE_REDUCTION_STEPS_KEY = "max_false_positive_reduction_steps"
44
45
  _BAD_OUTPUT = -1000.0
45
46
 
46
47
 
@@ -73,6 +74,7 @@ class Trainer(Fit):
73
74
  cutoff_dt: datetime.datetime | None = None,
74
75
  embedding_cols: list[list[str]] | None = None,
75
76
  allowed_models: set[str] | None = None,
77
+ max_false_positive_reduction_steps: int | None = None,
76
78
  ):
77
79
  tqdm.tqdm.pandas()
78
80
 
@@ -123,6 +125,10 @@ class Trainer(Fit):
123
125
  )
124
126
  if dt_column is None:
125
127
  dt_column = params[_DT_COLUMN_KEY]
128
+ if max_false_positive_reduction_steps is None:
129
+ max_false_positive_reduction_steps = params.get(
130
+ _MAX_FALSE_POSITIVE_REDUCTION_STEPS_KEY
131
+ )
126
132
  else:
127
133
  with open(params_file, "w", encoding="utf8") as handle:
128
134
  validation_size_value = None
@@ -153,6 +159,7 @@ class Trainer(Fit):
153
159
  _TEST_SIZE_KEY: test_size_value,
154
160
  _VALIDATION_SIZE_KEY: validation_size_value,
155
161
  _DT_COLUMN_KEY: dt_column,
162
+ _MAX_FALSE_POSITIVE_REDUCTION_STEPS_KEY: max_false_positive_reduction_steps,
156
163
  },
157
164
  handle,
158
165
  )
@@ -165,6 +172,7 @@ class Trainer(Fit):
165
172
  self._cutoff_dt = cutoff_dt
166
173
  self.embedding_cols = embedding_cols
167
174
  self._allowed_models = allowed_models
175
+ self._max_false_positive_reduction_steps = max_false_positive_reduction_steps
168
176
 
169
177
  def _provide_study(self, column: str) -> optuna.Study:
170
178
  storage_name = f"sqlite:///{self._folder}/{column}/{_STUDYDB_FILENAME}"
@@ -278,7 +286,9 @@ class Trainer(Fit):
278
286
  print(f"Row weights took {time.time() - start_row_weights}")
279
287
 
280
288
  # Create model
281
- model = ModelRouter(self._allowed_models)
289
+ model = ModelRouter(
290
+ self._allowed_models, self._max_false_positive_reduction_steps
291
+ )
282
292
  model.set_options(trial, x)
283
293
 
284
294
  # Train
@@ -576,7 +586,7 @@ class Trainer(Fit):
576
586
  reducer = CombinedReducer(self.embedding_cols)
577
587
  reducer.load(folder)
578
588
 
579
- model = ModelRouter(None)
589
+ model = ModelRouter(None, None)
580
590
  model.load(folder)
581
591
 
582
592
  selector = Selector(model)
@@ -629,7 +639,7 @@ class Trainer(Fit):
629
639
  if not os.path.isdir(date_path):
630
640
  continue
631
641
  try:
632
- model = ModelRouter(None)
642
+ model = ModelRouter(None, None)
633
643
  model.load(date_path)
634
644
  feature_importances[date_str] = model.feature_importances
635
645
  except FileNotFoundError as exc:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wavetrainer
3
- Version: 0.1.12
3
+ Version: 0.1.13
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
File without changes
File without changes
File without changes
File without changes