Skip to content

Commit 9fe5b4b

Browse files
committed
Update model classes for test mode and aeon compatibility
Added test_mode checks to multiple classifier classes (NeuralNetwork, AdaBoost, CatBoost, GradientBoosting, H2O, Keras, LightGBM, RandomForest, XGBoost) to define minimal parameter spaces for faster unit testing. Updated CNNClassifier_module to use TimeCNNClassifier instead of the deprecated CNNClassifier from aeon, and added a monkeypatch for sklearn.utils.validation.validate_data compatibility. Updated RocketClassifier import path to match newer aeon structure. Implemented a dummy classifier fallback for ShapeDTWClassifier since ShapeDTW has been removed in aeon v0.11.0, preventing import errors. Fixed a type hint syntax error in H2OStackedEnsembleClassifier.
1 parent 7450562 commit 9fe5b4b

14 files changed

Lines changed: 133 additions & 29 deletions

ml_grid/model_classes/H2OStackedEnsembleClassifier.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ def fit(
144144
base_models_list = []
145145
for i, model_wrapper in enumerate(
146146
self.base_models
147-
): # type:H2OBaseClassifier
147+
): # type: H2OBaseClassifier
148148
self.logger.debug(
149149
f"Fitting base model {i+1}: {type(model_wrapper).__name__}"
150150
)

ml_grid/model_classes/NeuralNetworkClassifier_class.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,18 @@ def __init__(
5656

5757
from ml_grid.util.global_params import global_parameters
5858

59-
if global_parameters.bayessearch:
59+
if getattr(global_parameters, "test_mode", False):
60+
self.parameter_space = [
61+
{
62+
"hidden_layer_sizes": ["(8,)"],
63+
"dropout_rate": [0.0],
64+
"learning_rate": [0.01],
65+
"activation_func": ["relu"],
66+
"epochs": [1],
67+
"batch_size": [32],
68+
}
69+
]
70+
elif global_parameters.bayessearch:
6071
from skopt.space import Categorical, Integer, Real
6172

6273
self.parameter_space = [

ml_grid/model_classes/adaboost_classifier_class.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,13 @@ def __init__(
4949
self.parameter_space: List[Dict[str, Any]]
5050
is_bayes_search = global_parameters.bayessearch
5151

52-
if is_bayes_search:
52+
if getattr(global_parameters, "test_mode", False):
53+
self.parameter_space = [
54+
{
55+
"n_estimators": [2],
56+
}
57+
]
58+
elif is_bayes_search:
5359
# For BayesSearchCV, define the search space using skopt.space objects.
5460
# We define separate spaces for each estimator type.
5561
self.parameter_space = [

ml_grid/model_classes/catboost_classifier_class.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,14 @@ def __init__(
5050

5151
self.parameter_space: Union[List[Dict[str, Any]], Dict[str, Any]]
5252
# Define parameter space for Bayesian search or traditional grid search
53-
if global_parameters.bayessearch:
53+
if getattr(global_parameters, "test_mode", False):
54+
self.parameter_space = [
55+
{
56+
"iterations": [2],
57+
"depth": [4],
58+
}
59+
]
60+
elif global_parameters.bayessearch:
5461
self.parameter_space = {
5562
"iterations": Integer(100, 1000),
5663
"learning_rate": Real(0.01, 0.3, prior="uniform"),

ml_grid/model_classes/gradientboosting_classifier_class.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,14 @@ def __init__(
5555
)
5656
self.parameter_space: Dict[str, Any]
5757

58-
if global_params.bayessearch:
58+
if getattr(global_parameters, "test_mode", False):
59+
self.parameter_space = [
60+
{
61+
"n_estimators": [2],
62+
"max_depth": [2],
63+
}
64+
]
65+
elif global_parameters.bayessearch:
5966
# Define the parameter space for Bayesian optimization
6067
self.parameter_space = {
6168
"ccp_alpha": Real(0.0, 1.0, prior="uniform"),

ml_grid/model_classes/h2o_classifier_class.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,15 @@ def __init__(
5353
self.method_name: str = "H2OAutoMLClassifier"
5454
self.parameter_space: List[Dict[str, Any]]
5555

56-
if global_params.bayessearch:
56+
if getattr(global_parameters, "test_mode", False):
57+
self.parameter_space = [
58+
{
59+
"max_runtime_secs": [5],
60+
"max_models": [1],
61+
"nfolds": [2],
62+
}
63+
]
64+
elif global_parameters.bayessearch:
5765
# Define the parameter space for Bayesian optimization
5866
self.parameter_space = [
5967
{

ml_grid/model_classes/keras_classifier_class.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ class for a Keras Sequential model wrapped by KerasClassifier. It provides
1717
from keras.optimizers import Adam
1818
from scikeras.wrappers import KerasClassifier
1919

20+
from ml_grid.util.global_params import global_parameters
21+
2022

2123
def create_model(
2224
layers: int = 1,
@@ -155,5 +157,15 @@ def floorer(t):
155157
# dropout_val = np.logspace(-1, -3, 2)
156158
}
157159

160+
if getattr(global_parameters, "test_mode", False):
161+
self.parameter_space = {
162+
"layers": [1],
163+
"epochs": [1],
164+
"batch_size": [32],
165+
"l1_reg": [0.0],
166+
"l2_reg": [0.0],
167+
"width": [4],
168+
}
169+
158170
# The duplicate create_model method has been removed. The module-level
159171
# function will be used instead.

ml_grid/model_classes/knn_wrapper_class.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
This module provides a scikit-learn compatible wrapper for the
55
simbsig.neighbors.KNeighborsClassifier, with GPU support.
66
"""
7+
78
import logging
89
from typing import Any, Dict, Optional, Union
910

ml_grid/model_classes/light_gbm_class.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,14 @@ def __init__(
4747

4848
self.parameter_space: Union[Dict[str, Any], List[Dict[str, Any]]]
4949

50-
if global_params.bayessearch:
50+
if getattr(global_parameters, "test_mode", False):
51+
self.parameter_space = [
52+
{
53+
"n_estimators": [2],
54+
"num_leaves": [2],
55+
}
56+
]
57+
elif global_parameters.bayessearch:
5158
self.parameter_space = {
5259
"boosting_type": Categorical(("gbdt", "dart", "goss")),
5360
"num_leaves": Integer(2, 100),

ml_grid/model_classes/randomforest_classifier_class.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,14 @@ def __init__(
5454
self.parameter_space: Dict[str, Any]
5555

5656
# Define the parameter space for Bayesian and traditional search
57-
if global_parameters.bayessearch:
57+
if getattr(global_parameters, "test_mode", False):
58+
self.parameter_space = [
59+
{
60+
"n_estimators": [2],
61+
"max_depth": [2],
62+
}
63+
]
64+
elif global_parameters.bayessearch:
5865
# Bayesian Optimization: Adjust parameters if traditional doesn't use param_dict
5966
self.parameter_space = {
6067
"bootstrap": Categorical([True, False]),

0 commit comments

Comments
 (0)