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.
- {wavetrainer-0.1.12/wavetrainer.egg-info → wavetrainer-0.1.13}/PKG-INFO +1 -1
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/setup.py +1 -1
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/__init__.py +1 -1
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/model_router.py +11 -2
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/trainer.py +13 -3
- {wavetrainer-0.1.12 → wavetrainer-0.1.13/wavetrainer.egg-info}/PKG-INFO +1 -1
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/LICENSE +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/MANIFEST.in +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/README.md +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/requirements.txt +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/setup.cfg +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/tests/__init__.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/tests/model/__init__.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/tests/model/catboost_kwargs_test.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/tests/trainer_test.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/calibrator/__init__.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/calibrator/calibrator.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/calibrator/calibrator_router.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/calibrator/vennabers_calibrator.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/create.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/exceptions.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/fit.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/__init__.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/catboost/__init__.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/catboost/catboost_classifier_wrap.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/catboost/catboost_kwargs.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/catboost/catboost_model.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/catboost/catboost_regressor_wrap.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/lightgbm/__init__.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/lightgbm/lightgbm_model.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/model.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/tabpfn/__init__.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/tabpfn/tabpfn_model.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/xgboost/__init__.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/xgboost/early_stopper.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/xgboost/xgboost_logger.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/xgboost/xgboost_model.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model_type.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/params.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/__init__.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/base_selector_reducer.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/combined_reducer.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/constant_reducer.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/correlation_reducer.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/duplicate_reducer.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/non_categorical_numeric_columns.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/nonnumeric_reducer.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/pca_reducer.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/reducer.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/select_by_single_feature_performance_reducer.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/smart_correlation_reducer.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/unseen_reducer.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/selector/__init__.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/selector/selector.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/weights/__init__.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/weights/class_weights.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/weights/combined_weights.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/weights/exponential_weights.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/weights/linear_weights.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/weights/noop_weights.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/weights/sigmoid_weights.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/weights/weights.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/weights/weights_router.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/windower/__init__.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/windower/windower.py +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer.egg-info/SOURCES.txt +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer.egg-info/dependency_links.txt +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer.egg-info/not-zip-safe +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer.egg-info/requires.txt +0 -0
- {wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer.egg-info/top_level.txt +0 -0
@@ -23,7 +23,7 @@ def install_requires() -> typing.List[str]:
|
|
23
23
|
|
24
24
|
setup(
|
25
25
|
name='wavetrainer',
|
26
|
-
version='0.1.
|
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',
|
@@ -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__(
|
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,
|
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(
|
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:
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/catboost/catboost_classifier_wrap.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/model/catboost/catboost_regressor_wrap.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{wavetrainer-0.1.12 → wavetrainer-0.1.13}/wavetrainer/reducer/non_categorical_numeric_columns.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|