wavetrainer 0.0.11__tar.gz → 0.0.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 (57) hide show
  1. {wavetrainer-0.0.11/wavetrainer.egg-info → wavetrainer-0.0.13}/PKG-INFO +3 -1
  2. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/README.md +1 -0
  3. wavetrainer-0.0.11/wavetrainer.egg-info/requires.txt → wavetrainer-0.0.13/requirements.txt +1 -0
  4. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/setup.py +1 -1
  5. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/__init__.py +1 -1
  6. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/create.py +2 -0
  7. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/trainer.py +11 -1
  8. {wavetrainer-0.0.11 → wavetrainer-0.0.13/wavetrainer.egg-info}/PKG-INFO +3 -1
  9. wavetrainer-0.0.11/requirements.txt → wavetrainer-0.0.13/wavetrainer.egg-info/requires.txt +2 -1
  10. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/LICENSE +0 -0
  11. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/MANIFEST.in +0 -0
  12. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/setup.cfg +0 -0
  13. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/tests/__init__.py +0 -0
  14. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/tests/model/__init__.py +0 -0
  15. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/tests/model/catboost_kwargs_test.py +0 -0
  16. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/tests/trainer_test.py +0 -0
  17. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/calibrator/__init__.py +0 -0
  18. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/calibrator/calibrator.py +0 -0
  19. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/calibrator/calibrator_router.py +0 -0
  20. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/calibrator/mapie_calibrator.py +0 -0
  21. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/calibrator/vennabers_calibrator.py +0 -0
  22. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/exceptions.py +0 -0
  23. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/fit.py +0 -0
  24. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/model/__init__.py +0 -0
  25. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/model/catboost_classifier_wrap.py +0 -0
  26. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/model/catboost_kwargs.py +0 -0
  27. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/model/catboost_model.py +0 -0
  28. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/model/catboost_regressor_wrap.py +0 -0
  29. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/model/model.py +0 -0
  30. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/model/model_router.py +0 -0
  31. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/model_type.py +0 -0
  32. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/params.py +0 -0
  33. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/reducer/__init__.py +0 -0
  34. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/reducer/base_selector_reducer.py +0 -0
  35. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/reducer/combined_reducer.py +0 -0
  36. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/reducer/constant_reducer.py +0 -0
  37. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/reducer/correlation_reducer.py +0 -0
  38. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/reducer/duplicate_reducer.py +0 -0
  39. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/reducer/nonnumeric_reducer.py +0 -0
  40. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/reducer/reducer.py +0 -0
  41. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/selector/__init__.py +0 -0
  42. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/selector/selector.py +0 -0
  43. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/weights/__init__.py +0 -0
  44. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/weights/class_weights.py +0 -0
  45. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/weights/combined_weights.py +0 -0
  46. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/weights/exponential_weights.py +0 -0
  47. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/weights/linear_weights.py +0 -0
  48. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/weights/noop_weights.py +0 -0
  49. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/weights/sigmoid_weights.py +0 -0
  50. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/weights/weights.py +0 -0
  51. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/weights/weights_router.py +0 -0
  52. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/windower/__init__.py +0 -0
  53. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer/windower/windower.py +0 -0
  54. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer.egg-info/SOURCES.txt +0 -0
  55. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer.egg-info/dependency_links.txt +0 -0
  56. {wavetrainer-0.0.11 → wavetrainer-0.0.13}/wavetrainer.egg-info/not-zip-safe +0 -0
  57. {wavetrainer-0.0.11 → wavetrainer-0.0.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.0.11
3
+ Version: 0.0.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
@@ -21,6 +21,7 @@ Requires-Dist: scipy>=1.15.2
21
21
  Requires-Dist: catboost>=1.2.7
22
22
  Requires-Dist: venn-abers>=1.4.6
23
23
  Requires-Dist: mapie>=0.9.2
24
+ Requires-Dist: pytz>=2025.1
24
25
 
25
26
  # wavetrainer
26
27
 
@@ -48,6 +49,7 @@ Python 3.11.6:
48
49
  - [catboost](https://catboost.ai/)
49
50
  - [venn-abers](https://github.com/ip200/venn-abers)
50
51
  - [mapie](https://mapie.readthedocs.io/en/stable/)
52
+ - [pytz](https://pythonhosted.org/pytz/)
51
53
 
52
54
  ## Raison D'être :thought_balloon:
53
55
 
@@ -24,6 +24,7 @@ Python 3.11.6:
24
24
  - [catboost](https://catboost.ai/)
25
25
  - [venn-abers](https://github.com/ip200/venn-abers)
26
26
  - [mapie](https://mapie.readthedocs.io/en/stable/)
27
+ - [pytz](https://pythonhosted.org/pytz/)
27
28
 
28
29
  ## Raison D'être :thought_balloon:
29
30
 
@@ -8,3 +8,4 @@ scipy>=1.15.2
8
8
  catboost>=1.2.7
9
9
  venn-abers>=1.4.6
10
10
  mapie>=0.9.2
11
+ pytz>=2025.1
@@ -23,7 +23,7 @@ def install_requires() -> typing.List[str]:
23
23
 
24
24
  setup(
25
25
  name='wavetrainer',
26
- version='0.0.11',
26
+ version='0.0.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.0.11"
5
+ __VERSION__ = "0.0.13"
6
6
  __all__ = ("create",)
@@ -14,6 +14,7 @@ def create(
14
14
  validation_size: float | datetime.timedelta | None = None,
15
15
  dt_column: str | None = None,
16
16
  max_train_timeout: datetime.timedelta | None = None,
17
+ cutoff_dt: datetime.datetime | None = None,
17
18
  ) -> Trainer:
18
19
  """Create a trainer."""
19
20
  return Trainer(
@@ -23,4 +24,5 @@ def create(
23
24
  validation_size=validation_size,
24
25
  dt_column=dt_column,
25
26
  max_train_timeout=max_train_timeout,
27
+ cutoff_dt=cutoff_dt,
26
28
  )
@@ -41,7 +41,7 @@ _DT_COLUMN_KEY = "dt_column"
41
41
  class Trainer(Fit):
42
42
  """A class for training and predicting from an array of data."""
43
43
 
44
- # pylint: disable=too-many-arguments,too-many-positional-arguments,too-many-statements,too-many-locals,too-many-branches
44
+ # pylint: disable=too-many-arguments,too-many-positional-arguments,too-many-statements,too-many-locals,too-many-branches,too-many-instance-attributes
45
45
 
46
46
  def __init__(
47
47
  self,
@@ -52,6 +52,7 @@ class Trainer(Fit):
52
52
  validation_size: float | datetime.timedelta | None = None,
53
53
  dt_column: str | None = None,
54
54
  max_train_timeout: datetime.timedelta | None = None,
55
+ cutoff_dt: datetime.datetime | None = None,
55
56
  ):
56
57
  tqdm.tqdm.pandas()
57
58
 
@@ -65,6 +66,8 @@ class Trainer(Fit):
65
66
  test_size = 0.15
66
67
  if validation_size is None:
67
68
  validation_size = 0.15
69
+ if cutoff_dt is None:
70
+ cutoff_dt = datetime.datetime.now()
68
71
 
69
72
  params_file = os.path.join(self._folder, _PARAMS_FILENAME)
70
73
  if walkforward_timedelta is None:
@@ -139,6 +142,7 @@ class Trainer(Fit):
139
142
  self._validation_size = validation_size
140
143
  self._dt_column = dt_column
141
144
  self._max_train_timeout = max_train_timeout
145
+ self._cutoff_dt = cutoff_dt
142
146
 
143
147
  def _provide_study(self, column: str) -> optuna.Study:
144
148
  storage_name = f"sqlite:///{self._folder}/{column}/{_STUDYDB_FILENAME}"
@@ -172,6 +176,9 @@ class Trainer(Fit):
172
176
  if self._dt_column is None
173
177
  else pd.DatetimeIndex(pd.to_datetime(df[self._dt_column]))
174
178
  )
179
+ df = df[dt_index < self._cutoff_dt] # type: ignore
180
+ y = y.iloc[: len(df)]
181
+ dt_index = dt_index[: len(df)]
175
182
 
176
183
  def _fit_column(y_series: pd.Series):
177
184
  column_dir = os.path.join(self._folder, str(y_series.name))
@@ -187,6 +194,7 @@ class Trainer(Fit):
187
194
  save: bool,
188
195
  split_idx: datetime.datetime,
189
196
  ) -> float:
197
+ print(f"Beginning trial for: {split_idx.isoformat()}")
190
198
  trial.set_user_attr(_IDX_USR_ATTR_KEY, split_idx.isoformat())
191
199
 
192
200
  train_dt_index = dt_index[: len(x)]
@@ -326,6 +334,7 @@ class Trainer(Fit):
326
334
  found = True
327
335
  break
328
336
  if found:
337
+ last_processed_dt = test_dt
329
338
  continue
330
339
 
331
340
  test_df = df.iloc[: train_len + count + test_len]
@@ -349,6 +358,7 @@ class Trainer(Fit):
349
358
  )
350
359
 
351
360
  _fit(study.best_trial, test_df, test_series, True, test_idx)
361
+ last_processed_dt = test_idx
352
362
 
353
363
  if isinstance(y, pd.Series):
354
364
  _fit_column(y)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wavetrainer
3
- Version: 0.0.11
3
+ Version: 0.0.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
@@ -21,6 +21,7 @@ Requires-Dist: scipy>=1.15.2
21
21
  Requires-Dist: catboost>=1.2.7
22
22
  Requires-Dist: venn-abers>=1.4.6
23
23
  Requires-Dist: mapie>=0.9.2
24
+ Requires-Dist: pytz>=2025.1
24
25
 
25
26
  # wavetrainer
26
27
 
@@ -48,6 +49,7 @@ Python 3.11.6:
48
49
  - [catboost](https://catboost.ai/)
49
50
  - [venn-abers](https://github.com/ip200/venn-abers)
50
51
  - [mapie](https://mapie.readthedocs.io/en/stable/)
52
+ - [pytz](https://pythonhosted.org/pytz/)
51
53
 
52
54
  ## Raison D'être :thought_balloon:
53
55
 
@@ -7,4 +7,5 @@ numpy>=1.26.4
7
7
  scipy>=1.15.2
8
8
  catboost>=1.2.7
9
9
  venn-abers>=1.4.6
10
- mapie>=0.9.2
10
+ mapie>=0.9.2
11
+ pytz>=2025.1
File without changes
File without changes
File without changes