wavetrainer 0.0.3__tar.gz → 0.0.4__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 (53) hide show
  1. {wavetrainer-0.0.3/wavetrainer.egg-info → wavetrainer-0.0.4}/PKG-INFO +1 -1
  2. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/setup.py +1 -1
  3. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/__init__.py +1 -1
  4. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/reducer/combined_reducer.py +10 -2
  5. wavetrainer-0.0.4/wavetrainer/reducer/nonnumeric_reducer.py +39 -0
  6. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/trainer.py +4 -2
  7. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/weights/class_weights.py +1 -1
  8. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/windower/windower.py +5 -2
  9. {wavetrainer-0.0.3 → wavetrainer-0.0.4/wavetrainer.egg-info}/PKG-INFO +1 -1
  10. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer.egg-info/SOURCES.txt +1 -0
  11. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/LICENSE +0 -0
  12. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/MANIFEST.in +0 -0
  13. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/README.md +0 -0
  14. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/requirements.txt +0 -0
  15. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/setup.cfg +0 -0
  16. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/tests/__init__.py +0 -0
  17. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/tests/trainer_test.py +0 -0
  18. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/calibrator/__init__.py +0 -0
  19. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/calibrator/calibrator.py +0 -0
  20. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/calibrator/calibrator_router.py +0 -0
  21. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/calibrator/mapie_calibrator.py +0 -0
  22. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/calibrator/vennabers_calibrator.py +0 -0
  23. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/create.py +0 -0
  24. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/exceptions.py +0 -0
  25. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/fit.py +0 -0
  26. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/load.py +0 -0
  27. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/model/__init__.py +0 -0
  28. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/model/catboost_model.py +0 -0
  29. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/model/model.py +0 -0
  30. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/model/model_router.py +0 -0
  31. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/model_type.py +0 -0
  32. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/params.py +0 -0
  33. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/reducer/__init__.py +0 -0
  34. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/reducer/base_selector_reducer.py +0 -0
  35. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/reducer/constant_reducer.py +0 -0
  36. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/reducer/correlation_reducer.py +0 -0
  37. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/reducer/duplicate_reducer.py +0 -0
  38. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/reducer/reducer.py +0 -0
  39. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/selector/__init__.py +0 -0
  40. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/selector/selector.py +0 -0
  41. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/weights/__init__.py +0 -0
  42. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/weights/combined_weights.py +0 -0
  43. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/weights/exponential_weights.py +0 -0
  44. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/weights/linear_weights.py +0 -0
  45. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/weights/noop_weights.py +0 -0
  46. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/weights/sigmoid_weights.py +0 -0
  47. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/weights/weights.py +0 -0
  48. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/weights/weights_router.py +0 -0
  49. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer/windower/__init__.py +0 -0
  50. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer.egg-info/dependency_links.txt +0 -0
  51. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer.egg-info/not-zip-safe +0 -0
  52. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/wavetrainer.egg-info/requires.txt +0 -0
  53. {wavetrainer-0.0.3 → wavetrainer-0.0.4}/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.3
3
+ Version: 0.0.4
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.3',
26
+ version='0.0.4',
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',
@@ -3,7 +3,7 @@
3
3
  from .create import create
4
4
  from .load import load
5
5
 
6
- __VERSION__ = "0.0.3"
6
+ __VERSION__ = "0.0.4"
7
7
  __all__ = (
8
8
  "create",
9
9
  "load",
@@ -10,6 +10,7 @@ import pandas as pd
10
10
  from .constant_reducer import ConstantReducer
11
11
  from .correlation_reducer import CorrelationReducer
12
12
  from .duplicate_reducer import DuplicateReducer
13
+ from .nonnumeric_reducer import NonNumericReducer
13
14
  from .reducer import Reducer
14
15
 
15
16
  _COMBINED_REDUCER_FILE = "combined_reducer.json"
@@ -21,7 +22,12 @@ class CombinedReducer(Reducer):
21
22
 
22
23
  def __init__(self):
23
24
  super().__init__()
24
- self._reducers = [ConstantReducer(), DuplicateReducer(), CorrelationReducer()]
25
+ self._reducers = [
26
+ ConstantReducer(),
27
+ DuplicateReducer(),
28
+ CorrelationReducer(),
29
+ NonNumericReducer(),
30
+ ]
25
31
 
26
32
  @classmethod
27
33
  def name(cls) -> str:
@@ -44,6 +50,8 @@ class CombinedReducer(Reducer):
44
50
  self._reducers.append(DuplicateReducer())
45
51
  elif reducer_name == CorrelationReducer.name():
46
52
  self._reducers.append(CorrelationReducer())
53
+ elif reducer_name == NonNumericReducer.name():
54
+ self._reducers.append(NonNumericReducer())
47
55
  for reducer in self._reducers:
48
56
  reducer.load(folder)
49
57
 
@@ -67,7 +75,7 @@ class CombinedReducer(Reducer):
67
75
  w: pd.Series | None = None,
68
76
  ) -> Self:
69
77
  for reducer in self._reducers:
70
- reducer.fit(df)
78
+ df = reducer.fit_transform(df)
71
79
  return self
72
80
 
73
81
  def transform(self, df: pd.DataFrame) -> pd.DataFrame:
@@ -0,0 +1,39 @@
1
+ """A reducer that removes non-numeric columns."""
2
+
3
+ from typing import Self
4
+
5
+ import optuna
6
+ import pandas as pd
7
+
8
+ from .reducer import Reducer
9
+
10
+
11
+ class NonNumericReducer(Reducer):
12
+ """A class that removes non numeric columns from a dataframe."""
13
+
14
+ @classmethod
15
+ def name(cls) -> str:
16
+ return "nonnumeric"
17
+
18
+ def set_options(self, trial: optuna.Trial | optuna.trial.FrozenTrial) -> None:
19
+ pass
20
+
21
+ def load(self, folder: str) -> None:
22
+ pass
23
+
24
+ def save(self, folder: str) -> None:
25
+ pass
26
+
27
+ def fit(
28
+ self,
29
+ df: pd.DataFrame,
30
+ y: pd.Series | pd.DataFrame | None = None,
31
+ w: pd.Series | None = None,
32
+ ) -> Self:
33
+ return self
34
+
35
+ def transform(self, df: pd.DataFrame) -> pd.DataFrame:
36
+ categorical_cols = df.select_dtypes(include="category").columns.tolist()
37
+ numeric_cols = df.select_dtypes(include="number").columns.tolist()
38
+ keep_cols = categorical_cols + numeric_cols
39
+ return df[keep_cols]
@@ -252,14 +252,16 @@ class Trainer(Fit):
252
252
  start_validation_index = (
253
253
  dt_index[-int(len(dt_index) * self._validation_size) - 1]
254
254
  if isinstance(self._validation_size, float)
255
- else dt_index[dt_index >= self._validation_size][0]
255
+ else dt_index[
256
+ dt_index >= (dt_index.to_list()[-1] - self._validation_size)
257
+ ].to_list()[0]
256
258
  )
257
259
  test_df = df[dt_index < start_validation_index]
258
260
  test_dt_index = (
259
261
  test_df.index if self._dt_column is None else test_df[self._dt_column]
260
262
  )
261
263
  start_test_index = (
262
- test_dt_index[-int(len(test_dt_index) * self._test_size)]
264
+ test_dt_index.to_list()[-int(len(test_dt_index) * self._test_size)]
263
265
  if isinstance(self._test_size, float)
264
266
  else test_dt_index[test_dt_index >= self._test_size][0]
265
267
  )
@@ -47,7 +47,7 @@ class ClassWeights(Weights):
47
47
  self._class_weights = {}
48
48
  return self
49
49
 
50
- arr = df.astype(int).to_numpy().flatten().astype(float)
50
+ arr = y.astype(int).to_numpy().flatten().astype(float)
51
51
  unique_vals = np.unique(arr)
52
52
  w_arr = compute_class_weight(
53
53
  class_weight="balanced", classes=unique_vals, y=arr
@@ -52,7 +52,9 @@ class Windower(Params, Fit):
52
52
  lookback_ratio = self._lookback_ratio
53
53
  if lookback_ratio is None:
54
54
  raise ValueError("lookback_ratio is null")
55
- dt_index = df.index if self._dt_column is None else df[self._dt_column]
55
+ dt_index = (
56
+ df.index if self._dt_column is None else df[self._dt_column].to_list()
57
+ )
56
58
  start_idx = dt_index[int(len(df) * lookback_ratio)]
57
59
  end_idx = dt_index[-1]
58
60
  td = end_idx.to_pydatetime() - start_idx.to_pydatetime()
@@ -66,5 +68,6 @@ class Windower(Params, Fit):
66
68
  dt_index = df.index if self._dt_column is None else df[self._dt_column]
67
69
  return df[
68
70
  dt_index
69
- >= dt_index[-1].to_pydatetime() - datetime.timedelta(seconds=lookback)
71
+ >= dt_index.to_list()[-1].to_pydatetime()
72
+ - datetime.timedelta(seconds=lookback)
70
73
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wavetrainer
3
- Version: 0.0.3
3
+ Version: 0.0.4
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
@@ -34,6 +34,7 @@ wavetrainer/reducer/combined_reducer.py
34
34
  wavetrainer/reducer/constant_reducer.py
35
35
  wavetrainer/reducer/correlation_reducer.py
36
36
  wavetrainer/reducer/duplicate_reducer.py
37
+ wavetrainer/reducer/nonnumeric_reducer.py
37
38
  wavetrainer/reducer/reducer.py
38
39
  wavetrainer/selector/__init__.py
39
40
  wavetrainer/selector/selector.py
File without changes
File without changes
File without changes
File without changes