wavetrainer 0.0.41__tar.gz → 0.0.42__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.0.41/wavetrainer.egg-info → wavetrainer-0.0.42}/PKG-INFO +1 -1
  2. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/setup.py +1 -1
  3. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/__init__.py +1 -1
  4. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/selector/selector.py +13 -10
  5. {wavetrainer-0.0.41 → wavetrainer-0.0.42/wavetrainer.egg-info}/PKG-INFO +1 -1
  6. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/LICENSE +0 -0
  7. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/MANIFEST.in +0 -0
  8. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/README.md +0 -0
  9. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/requirements.txt +0 -0
  10. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/setup.cfg +0 -0
  11. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/tests/__init__.py +0 -0
  12. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/tests/model/__init__.py +0 -0
  13. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/tests/model/catboost_kwargs_test.py +0 -0
  14. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/tests/trainer_test.py +0 -0
  15. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/calibrator/__init__.py +0 -0
  16. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/calibrator/calibrator.py +0 -0
  17. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/calibrator/calibrator_router.py +0 -0
  18. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/calibrator/mapie_calibrator.py +0 -0
  19. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/calibrator/vennabers_calibrator.py +0 -0
  20. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/create.py +0 -0
  21. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/exceptions.py +0 -0
  22. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/fit.py +0 -0
  23. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/model/__init__.py +0 -0
  24. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/model/catboost/__init__.py +0 -0
  25. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/model/catboost/catboost_classifier_wrap.py +0 -0
  26. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/model/catboost/catboost_kwargs.py +0 -0
  27. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/model/catboost/catboost_model.py +0 -0
  28. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/model/catboost/catboost_regressor_wrap.py +0 -0
  29. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/model/model.py +0 -0
  30. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/model/model_router.py +0 -0
  31. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/model/tabpfn/__init__.py +0 -0
  32. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/model/tabpfn/tabpfn_model.py +0 -0
  33. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/model/xgboost/__init__.py +0 -0
  34. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/model/xgboost/early_stopper.py +0 -0
  35. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/model/xgboost/xgboost_logger.py +0 -0
  36. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/model/xgboost/xgboost_model.py +0 -0
  37. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/model_type.py +0 -0
  38. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/params.py +0 -0
  39. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/reducer/__init__.py +0 -0
  40. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/reducer/base_selector_reducer.py +0 -0
  41. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/reducer/combined_reducer.py +0 -0
  42. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/reducer/constant_reducer.py +0 -0
  43. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/reducer/correlation_reducer.py +0 -0
  44. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/reducer/duplicate_reducer.py +0 -0
  45. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/reducer/non_categorical_numeric_columns.py +0 -0
  46. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/reducer/nonnumeric_reducer.py +0 -0
  47. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/reducer/reducer.py +0 -0
  48. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/reducer/select_by_single_feature_performance_reducer.py +0 -0
  49. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/reducer/smart_correlation_reducer.py +0 -0
  50. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/reducer/unseen_reducer.py +0 -0
  51. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/selector/__init__.py +0 -0
  52. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/trainer.py +0 -0
  53. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/weights/__init__.py +0 -0
  54. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/weights/class_weights.py +0 -0
  55. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/weights/combined_weights.py +0 -0
  56. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/weights/exponential_weights.py +0 -0
  57. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/weights/linear_weights.py +0 -0
  58. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/weights/noop_weights.py +0 -0
  59. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/weights/sigmoid_weights.py +0 -0
  60. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/weights/weights.py +0 -0
  61. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/weights/weights_router.py +0 -0
  62. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/windower/__init__.py +0 -0
  63. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer/windower/windower.py +0 -0
  64. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer.egg-info/SOURCES.txt +0 -0
  65. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer.egg-info/dependency_links.txt +0 -0
  66. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer.egg-info/not-zip-safe +0 -0
  67. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/wavetrainer.egg-info/requires.txt +0 -0
  68. {wavetrainer-0.0.41 → wavetrainer-0.0.42}/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.41
3
+ Version: 0.0.42
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.41',
26
+ version='0.0.42',
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.41"
5
+ __VERSION__ = "0.0.42"
6
6
  __all__ = ("create",)
@@ -1,6 +1,6 @@
1
1
  """The selector class."""
2
2
 
3
- # pylint: disable=too-many-locals
3
+ # pylint: disable=too-many-locals,line-too-long
4
4
  import functools
5
5
  import json
6
6
  import logging
@@ -59,12 +59,12 @@ class Selector(Params, Fit):
59
59
  raise ValueError("y is not a series.")
60
60
  if len(df.columns) <= 1:
61
61
  return self
62
- n_features_to_select = max(1, int(len(df.columns) * self._feature_ratio))
63
- steps = int((len(df.columns) - n_features_to_select) / self._steps)
62
+ print(
63
+ f"Performing feature selection with {self._steps} steps and a total ratio of {self._feature_ratio}"
64
+ )
64
65
  current_features = df.columns.values.tolist()
65
- self._model.fit(df, y=y, w=w, eval_x=eval_x, eval_y=eval_y)
66
66
 
67
- def set_current_features():
67
+ def set_current_features(required_features: int):
68
68
  nonlocal current_features
69
69
  feature_importances = self._model.feature_importances
70
70
  if not feature_importances:
@@ -80,24 +80,27 @@ class Selector(Params, Fit):
80
80
  )
81
81
  if not current_features:
82
82
  current_features = [list(feature_importances.keys())[0]]
83
+ current_features = current_features[:required_features]
83
84
 
84
- for i in range(steps):
85
+ n_features = len(current_features)
86
+ for i in range(self._steps):
85
87
  print(
86
88
  f"Recursive Feature Elimination Step {i}, current features: {len(current_features)}"
87
89
  )
88
90
  ratio_diff = 1.0 - self._feature_ratio
89
- ratio_step = ratio_diff / float(steps)
91
+ ratio_step = ratio_diff / float(self._steps)
90
92
  current_ratio = 1.0 - (ratio_step * i)
91
93
  n_features = max(1, int(len(df.columns) * current_ratio))
92
94
  if n_features >= len(current_features):
93
95
  continue
94
- set_current_features()
96
+
97
+ self._model.fit(df, y=y, w=w, eval_x=eval_x, eval_y=eval_y)
98
+ set_current_features(n_features)
95
99
  print(f"Reduced features to {len(current_features)}")
96
100
  df = df[current_features]
97
101
  if eval_x is not None:
98
102
  eval_x = eval_x[current_features]
99
- self._model.fit(df, y=y, w=w, eval_x=eval_x, eval_y=eval_y)
100
- set_current_features()
103
+
101
104
  self._selector = current_features
102
105
 
103
106
  return self
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wavetrainer
3
- Version: 0.0.41
3
+ Version: 0.0.42
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