wavetrainer 0.0.30__tar.gz → 0.0.31__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 (60) hide show
  1. {wavetrainer-0.0.30/wavetrainer.egg-info → wavetrainer-0.0.31}/PKG-INFO +1 -1
  2. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/setup.py +1 -1
  3. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/__init__.py +1 -1
  4. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/reducer/combined_reducer.py +9 -0
  5. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/trainer.py +17 -2
  6. {wavetrainer-0.0.30 → wavetrainer-0.0.31/wavetrainer.egg-info}/PKG-INFO +1 -1
  7. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/LICENSE +0 -0
  8. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/MANIFEST.in +0 -0
  9. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/README.md +0 -0
  10. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/requirements.txt +0 -0
  11. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/setup.cfg +0 -0
  12. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/tests/__init__.py +0 -0
  13. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/tests/model/__init__.py +0 -0
  14. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/tests/model/catboost_kwargs_test.py +0 -0
  15. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/tests/trainer_test.py +0 -0
  16. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/calibrator/__init__.py +0 -0
  17. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/calibrator/calibrator.py +0 -0
  18. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/calibrator/calibrator_router.py +0 -0
  19. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/calibrator/mapie_calibrator.py +0 -0
  20. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/calibrator/vennabers_calibrator.py +0 -0
  21. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/create.py +0 -0
  22. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/exceptions.py +0 -0
  23. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/fit.py +0 -0
  24. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/model/__init__.py +0 -0
  25. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/model/catboost_classifier_wrap.py +0 -0
  26. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/model/catboost_kwargs.py +0 -0
  27. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/model/catboost_model.py +0 -0
  28. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/model/catboost_regressor_wrap.py +0 -0
  29. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/model/model.py +0 -0
  30. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/model/model_router.py +0 -0
  31. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/model/tabpfn_model.py +0 -0
  32. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/model_type.py +0 -0
  33. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/params.py +0 -0
  34. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/reducer/__init__.py +0 -0
  35. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/reducer/base_selector_reducer.py +0 -0
  36. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/reducer/constant_reducer.py +0 -0
  37. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/reducer/correlation_reducer.py +0 -0
  38. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/reducer/duplicate_reducer.py +0 -0
  39. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/reducer/nonnumeric_reducer.py +0 -0
  40. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/reducer/reducer.py +0 -0
  41. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/reducer/smart_correlation_reducer.py +0 -0
  42. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/reducer/unseen_reducer.py +0 -0
  43. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/selector/__init__.py +0 -0
  44. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/selector/selector.py +0 -0
  45. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/weights/__init__.py +0 -0
  46. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/weights/class_weights.py +0 -0
  47. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/weights/combined_weights.py +0 -0
  48. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/weights/exponential_weights.py +0 -0
  49. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/weights/linear_weights.py +0 -0
  50. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/weights/noop_weights.py +0 -0
  51. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/weights/sigmoid_weights.py +0 -0
  52. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/weights/weights.py +0 -0
  53. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/weights/weights_router.py +0 -0
  54. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/windower/__init__.py +0 -0
  55. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer/windower/windower.py +0 -0
  56. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer.egg-info/SOURCES.txt +0 -0
  57. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer.egg-info/dependency_links.txt +0 -0
  58. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer.egg-info/not-zip-safe +0 -0
  59. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/wavetrainer.egg-info/requires.txt +0 -0
  60. {wavetrainer-0.0.30 → wavetrainer-0.0.31}/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.0.30
3
+ Version: 0.0.31
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.0.30',
26
+ version='0.0.31',
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.0.30"
5
+ __VERSION__ = "0.0.31"
6
6
  __all__ = ("create",)
@@ -90,7 +90,16 @@ class CombinedReducer(Reducer):
90
90
  eval_y: pd.Series | pd.DataFrame | None = None,
91
91
  ) -> Self:
92
92
  for reducer in self._reducers:
93
+ before_columns = set(df.columns.values)
93
94
  df = reducer.fit_transform(df)
95
+ after_columns = set(df.columns.values)
96
+ removed_columns = before_columns.difference(after_columns)
97
+ if removed_columns:
98
+ logging.info(
99
+ "Removed columns %s using %s",
100
+ ",".join(removed_columns),
101
+ reducer.name(),
102
+ )
94
103
  return self
95
104
 
96
105
  def transform(self, df: pd.DataFrame) -> pd.DataFrame:
@@ -37,6 +37,7 @@ _TEST_SIZE_KEY = "test_size"
37
37
  _VALIDATION_SIZE_KEY = "validation_size"
38
38
  _IDX_USR_ATTR_KEY = "idx"
39
39
  _DT_COLUMN_KEY = "dt_column"
40
+ _BAD_OUTPUT = -1.0
40
41
 
41
42
 
42
43
  def _assign_bin(timestamp, bins: list[datetime.datetime]) -> int:
@@ -209,6 +210,7 @@ class Trainer(Fit):
209
210
  folder = os.path.join(
210
211
  self._folder, str(y_series.name), split_idx.isoformat()
211
212
  )
213
+ new_folder = os.path.exists(folder)
212
214
  os.makedirs(folder, exist_ok=True)
213
215
  trial_file = os.path.join(folder, _TRIAL_FILENAME)
214
216
  if os.path.exists(trial_file):
@@ -234,8 +236,10 @@ class Trainer(Fit):
234
236
  x_train = windower.fit_transform(x_train)
235
237
  y_train = y_train[-len(x_train) :]
236
238
  if len(y_train.unique()) <= 1:
239
+ if new_folder:
240
+ os.removedirs(folder)
237
241
  logging.warning("Y train only contains 1 unique datapoint.")
238
- return -1.0
242
+ return _BAD_OUTPUT
239
243
 
240
244
  # Perform common reductions
241
245
  reducer = CombinedReducer()
@@ -297,7 +301,9 @@ class Trainer(Fit):
297
301
  return output
298
302
  except WavetrainException as exc:
299
303
  logging.warning(str(exc))
300
- return -1.0
304
+ if new_folder:
305
+ os.removedirs(folder)
306
+ return _BAD_OUTPUT
301
307
 
302
308
  start_validation_index = (
303
309
  dt_index.to_list()[-int(len(dt_index) * self._validation_size) - 1]
@@ -339,6 +345,15 @@ class Trainer(Fit):
339
345
  if self._max_train_timeout is None
340
346
  else self._max_train_timeout.total_seconds(),
341
347
  )
348
+ while study.best_trial.value is None or study.best_trial.value != _BAD_OUTPUT:
349
+ study.optimize(
350
+ test_objective,
351
+ n_trials=1,
352
+ show_progress_bar=True,
353
+ timeout=None
354
+ if self._max_train_timeout is None
355
+ else self._max_train_timeout.total_seconds(),
356
+ )
342
357
 
343
358
  train_len = len(df[dt_index < start_test_index])
344
359
  test_len = len(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wavetrainer
3
- Version: 0.0.30
3
+ Version: 0.0.31
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