RecurrentRegressor¶
- class RecurrentRegressor(rnn_type: str = 'lstm', n_layers: int = 1, n_units: int = 64, dropout_intermediate: float = 0.2, dropout_output: float = 0.2, bidirectional: bool = False, activation: str = 'tanh', return_sequence_last: bool | None = None, n_epochs: int = 100, callbacks: Callback | list[Callback] | None = None, verbose: bool = False, loss: str = 'mean_squared_error', output_activation: str = 'linear', metrics: str | list[str] = 'mean_squared_error', batch_size: int = 32, use_mini_batch_size: bool = False, random_state: int | np.random.RandomState | None = None, file_path: str = './', save_best_model: bool = False, save_last_model: bool = False, save_init_model: bool = False, best_file_name: str = 'best_model', last_file_name: str = 'last_model', init_file_name: str = 'init_model', optimizer: tf.keras.optimizers.Optimizer | None = None)[source]¶
Bases:
BaseDeepRegressorRecurrent Neural Network (RNN) regressor.
Adapted from the implementation used in sktime-dl for time series regression.
- Parameters:
- rnn_typestr, default = “lstm”
Type of RNN layer to use. Options: “lstm”, “gru”, “simple_rnn”
- n_layersint, default = 1
Number of RNN layers
- n_unitsint, default = 64
Number of units in each RNN layer
- dropout_ratefloat, default = 0.2
Dropout rate for regularization
- bidirectionalbool, default = False
Whether to use bidirectional RNN layers
- activationstr, default = “tanh”
Activation function for RNN layers
- return_sequence_lastbool, default = None
Whether RNN layers should return sequences. If None, automatically determined
- n_epochsint, default = 100
Number of epochs to train the model
- batch_sizeint, default = 32
Number of samples per gradient update
- use_mini_batch_sizebool, default = False
Condition on using the mini batch size formula
- callbackskeras callback or list of callbacks, default = None
The default list of callbacks are set to ModelCheckpoint and ReduceLROnPlateau
- random_stateint, RandomState instance or None, default=None
If int, random_state is the seed used by the random number generator; If RandomState instance, random_state is the random number generator; If None, the random number generator is the RandomState instance used by np.random.
- file_pathstr, default = ‘./’
File path when saving model_Checkpoint callback
- save_best_modelbool, default = False
Whether or not to save the best model
- save_last_modelbool, default = False
Whether or not to save the last model
- save_init_modelbool, default = False
Whether to save the initialization of the model
- best_file_namestr, default = “best_model”
The name of the file of the best model
- last_file_namestr, default = “last_model”
The name of the file of the last model
- init_file_namestr, default = “init_model”
The name of the file of the init model
- verbosebool, default = False
Whether to output extra information
- lossstr, default = “mean_squared_error”
The name of the keras training loss
- optimizerkeras.optimizer, default = None
The keras optimizer used for training. If None, uses Adam with lr=0.001
- metricsstr or list[str], default=”mean_squared_error”
The evaluation metrics to use during training
- output_activationstr, default = “linear”
The output activation for the regressor
Notes
Capabilities ¶ Missing Values
No
Multithreading
No
Univariate
Yes
Multivariate
Yes
Unequal Length
No
Train Estimate
No
Contractable
No
Examples
>>> from aeon.regression.deep_learning import RecurrentRegressor >>> from aeon.testing.data_generation import make_example_3d_numpy >>> X, y = make_example_3d_numpy(n_cases=10, n_channels=1, n_timepoints=12, ... return_y=True, regression_target=True, ... random_state=0) >>> rgs = RecurrentRegressor(n_epochs=20, batch_size=4) >>> rgs.fit(X, y) RecurrentRegressor(...)
Methods
build_model(input_shape, **kwargs)Construct a compiled, un-trained, keras model that is ready for training.
clone([random_state])Obtain a clone of the object with the same hyperparameters.
fit(X, y)Fit time series regressor to training data.
fit_predict(X, y)Fits the regressor and predicts class labels for X.
get_class_tag(tag_name[, raise_error, ...])Get tag value from estimator class (only class tags).
Get class tags from estimator class and all its parent classes.
get_fitted_params([deep])Get fitted parameters.
get_params([deep])Get parameters for this estimator.
get_tag(tag_name[, raise_error, ...])Get tag value from estimator class.
get_tags()Get tags from estimator.
load_model(model_path)Load a pre-trained keras model instead of fitting.
predict(X)Predicts target variable for time series in X.
reset([keep])Reset the object to a clean post-init state.
save_last_model_to_file([file_path])Save the last epoch of the trained deep learning model.
score(X, y[, metric, metric_params])Scores predicted labels against ground truth labels on X.
set_params(**params)Set the parameters of this estimator.
set_tags(**tag_dict)Set dynamic tags to given values.
summary()Summary function to return the losses/metrics for model fit.
- build_model(input_shape: tuple[int, ...], **kwargs: Any) tf.keras.Model[source]¶
Construct a compiled, un-trained, keras model that is ready for training.
In aeon, time series are stored in numpy arrays of shape (d,m), where d is the number of dimensions, m is the series length. Keras/tensorflow assume data is in shape (m,d). This method also assumes (m,d). Transpose should happen in fit.
- Parameters:
- input_shapetuple
The shape of the data fed into the input layer, should be (m,d)
- Returns:
- outputa compiled Keras Model
- clone(random_state=None)[source]¶
Obtain a clone of the object with the same hyperparameters.
A clone is a different object without shared references, in post-init state. This function is equivalent to returning
sklearn.cloneofself. Equal in value totype(self)(**self.get_params(deep=False)).- Parameters:
- random_stateint, RandomState instance, or None, default=None
Sets the random state of the clone. If
None, the random state is not set. Ifint,random_stateis the seed used by the random number generator. IfRandomStateinstance,random_stateis the random number generator.
- Returns:
- estimatorobject
Instance of
type(self), clone of self (see above)
- fit(X, y) BaseCollectionEstimator[source]¶
Fit time series regressor to training data.
- Parameters:
- Xnp.ndarray or list
Input data, any number of channels, equal length series of shape
( n_cases, n_channels, n_timepoints)or 2D np.array (univariate, equal length series) of shape(n_cases, n_timepoints)or list of numpy arrays (any number of channels, unequal length series) of shape[n_cases], 2D np.array(n_channels, n_timepoints_i), wheren_timepoints_iis length of seriesi. Other types are allowed and converted into one of the above.Different estimators have different capabilities to handle different types of input. If
self.get_tag("capability:multivariate")is False, they cannot handle multivariate series, so eithern_channels == 1is true or X is 2D of shape(n_cases, n_timepoints). Ifself.get_tag( "capability:unequal_length")is False, they cannot handle unequal length input. In both situations, aValueErroris raised if X has a characteristic that the estimator does not have the capability for is passed.- ynp.ndarray
1D np.array of float, of shape
(n_cases)- regression targets (ground truth) for fitting indices corresponding to instance indices in X.
- Returns:
- selfBaseRegressor
Reference to self.
Notes
Changes state by creating a fitted model that updates attributes ending in “_” and sets is_fitted flag to True.
- fit_predict(X, y) ndarray[source]¶
Fits the regressor and predicts class labels for X.
fit_predict produces prediction estimates using just the train data. By default, this is through 10x cross validation, although some estimators may utilise specialist techniques such as out-of-bag estimates or leave-one-out cross-validation.
Regressors which override _fit_predict will have the
capability:train_estimatetag set to True.Generally, this will not be the same as fitting on the whole train data then making train predictions. To do this, you should call fit(X,y).predict(X)
- Parameters:
- Xnp.ndarray or list
Input data, any number of channels, equal length series of shape
( n_cases, n_channels, n_timepoints)or 2D np.array (univariate, equal length series) of shape(n_cases, n_timepoints)or list of numpy arrays (any number of channels, unequal length series) of shape[n_cases], 2D np.array(n_channels, n_timepoints_i), wheren_timepoints_iis length of seriesi. other types are allowed and converted into one of the above.Different estimators have different capabilities to handle different types of input. If
self.get_tag("capability:multivariate")is False, they cannot handle multivariate series, so eithern_channels == 1is true or X is 2D of shape(n_cases, n_timepoints). Ifself.get_tag( "capability:unequal_length")is False, they cannot handle unequal length input. In both situations, aValueErroris raised if X has a characteristic that the estimator does not have the capability for is passed.- ynp.ndarray
1D np.array of float, of shape
(n_cases)- regression targets (ground truth) for fitting indices corresponding to instance indices in X.
- Returns:
- predictionsnp.ndarray
1D np.array of float, of shape (n_cases) - predicted regression labels indices correspond to instance indices in X
- classmethod get_class_tag(tag_name, raise_error=True, tag_value_default=None)[source]¶
Get tag value from estimator class (only class tags).
- Parameters:
- tag_namestr
Name of tag value.
- raise_errorbool, default=True
Whether a
ValueErroris raised when the tag is not found.- tag_value_defaultany type, default=None
Default/fallback value if tag is not found and error is not raised.
- Returns:
- tag_value
Value of the
tag_nametag in cls. If not found, returns an error ifraise_errorisTrue, otherwise it returnstag_value_default.
- Raises:
- ValueError
if
raise_errorisTrueandtag_nameis not inself.get_tags().keys()
Examples
>>> from aeon.classification import DummyClassifier >>> DummyClassifier.get_class_tag("capability:multivariate") True
- classmethod get_class_tags()[source]¶
Get class tags from estimator class and all its parent classes.
- Returns:
- collected_tagsdict
Dictionary of tag name and tag value pairs. Collected from
_tagsclass attribute via nested inheritance. These are not overridden by dynamic tags set byset_tagsor class__init__calls.
- get_fitted_params(deep=True)[source]¶
Get fitted parameters.
- State required:
Requires state to be “fitted”.
- Parameters:
- deepbool, default=True
If
True, will return the fitted parameters for this estimator and contained subobjects that are estimators.
- Returns:
- fitted_paramsdict
Fitted parameter names mapped to their values.
- get_params(deep=True)¶
Get parameters for this estimator.
- Parameters:
- deepbool, default=True
If True, will return the parameters for this estimator and contained subobjects that are estimators.
- Returns:
- paramsdict
Parameter names mapped to their values.
- get_tag(tag_name, raise_error=True, tag_value_default=None)[source]¶
Get tag value from estimator class.
Includes dynamic and overridden tags.
- Parameters:
- tag_namestr
Name of tag to be retrieved.
- raise_errorbool, default=True
Whether a
ValueErroris raised when the tag is not found.- tag_value_defaultany type, default=None
Default/fallback value if tag is not found and error is not raised.
- Returns:
- tag_value
Value of the
tag_nametag in self. If not found, returns an error ifraise_errorisTrue, otherwise it returnstag_value_default.
- Raises:
- ValueError
if raise_error is
Trueandtag_nameis not inself.get_tags().keys()
Examples
>>> from aeon.classification import DummyClassifier >>> d = DummyClassifier() >>> d.get_tag("capability:multivariate") True
- get_tags()[source]¶
Get tags from estimator.
Includes dynamic and overridden tags.
- Returns:
- collected_tagsdict
Dictionary of tag name and tag value pairs. Collected from
_tagsclass attribute via nested inheritance and then any overridden and new tags from__init__orset_tags.
- load_model(model_path: str) None[source]¶
Load a pre-trained keras model instead of fitting.
Pretrained model should be saved using “save_last_model” or “save_best_model” boolean parameter. When calling this function, all functionalities can be used such as predict, etc. with the loaded model.
- Parameters:
- model_pathstr (path including model name and extension)
The complete path (including file name and ‘.keras’ extension) from which the pre-trained model’s weights and configuration are loaded. Example: model_path=”path/to/file/best_model.keras”
- Returns:
- None
- predict(X) ndarray[source]¶
Predicts target variable for time series in X.
- Parameters:
- Xnp.ndarray or list
Input data, any number of channels, equal length series of shape
( n_cases, n_channels, n_timepoints)or 2D np.array (univariate, equal length series) of shape(n_cases, n_timepoints)or list of numpy arrays (any number of channels, unequal length series) of shape[n_cases], 2D np.array(n_channels, n_timepoints_i), wheren_timepoints_iis length of seriesiother types are allowed and converted into one of the above.Different estimators have different capabilities to handle different types of input. If
self.get_tag("capability:multivariate")is False, they cannot handle multivariate series, so eithern_channels == 1is true or X is 2D of shape(n_cases, n_timepoints). Ifself.get_tag( "capability:unequal_length")is False, they cannot handle unequal length input. In both situations, aValueErroris raised if X has a characteristic that the estimator does not have the capability for is passed.
- Returns:
- predictionsnp.ndarray
1D np.array of float, of shape (n_cases) - predicted regression labels indices correspond to instance indices in X
- reset(keep=None)[source]¶
Reset the object to a clean post-init state.
After a
self.reset()call,selfis equal or similar in value totype(self)(**self.get_params(deep=False)), assuming no other attributes were kept usingkeep.- Detailed behaviour:
- removes any object attributes, except:
hyper-parameters (arguments of
__init__) object attributes containing double-underscores, i.e., the string “__”
runs
__init__with current values of hyperparameters (result ofget_params)- Not affected by the reset are:
object attributes containing double-underscores class and object methods, class attributes any attributes specified in the
keepargument
- Parameters:
- keepNone, str, or list of str, default=None
If
None, all attributes are removed except hyperparameters. Ifstr, only the attribute with this name is kept. Iflistofstr, only the attributes with these names are kept.
- Returns:
- selfobject
Reference to self.
- Raises:
- TypeError
If ‘keep’ is not a string or a list of strings.
- save_last_model_to_file(file_path: str = './') None[source]¶
Save the last epoch of the trained deep learning model.
- Parameters:
- file_pathstr, default = “./”
The directory where the model will be saved
- Returns:
- None
- score(X, y, metric='r2', metric_params=None) float[source]¶
Scores predicted labels against ground truth labels on X.
- Parameters:
- Xnp.ndarray or list
Input data, any number of channels, equal length series of shape
( n_cases, n_channels, n_timepoints)or 2D np.array (univariate, equal length series) of shape(n_cases, n_timepoints)or list of numpy arrays (any number of channels, unequal length series) of shape[n_cases], 2D np.array(n_channels, n_timepoints_i), wheren_timepoints_iis length of seriesi. other types are allowed and converted into one of the above.Different estimators have different capabilities to handle different types of input. If
self.get_tag("capability:multivariate")is False, they cannot handle multivariate series, so eithern_channels == 1is true or X is 2D of shape(n_cases, n_timepoints). Ifself.get_tag( "capability:unequal_length")is False, they cannot handle unequal length input. In both situations, aValueErroris raised if X has a characteristic that the estimator does not have the capability for is passed.- ynp.ndarray
1D np.array of float, of shape
(n_cases)- regression targets (ground truth) for fitting indices corresponding to instance indices in X.- metricUnion[str, callable], default=”r2”,
Defines the scoring metric to test the fit of the model. For supported strings arguments, check
sklearn.metrics.get_scorer_names.- metric_paramsdict, default=None,
Contains parameters to be passed to the scoring function. If None, no parameters are passed.
- Returns:
- scorefloat
MSE score of predict(X) vs y
- set_params(**params)¶
Set the parameters of this estimator.
The method works on simple estimators as well as on nested objects (such as
Pipeline). The latter have parameters of the form<component>__<parameter>so that it’s possible to update each component of a nested object.- Parameters:
- **paramsdict
Estimator parameters.
- Returns:
- selfestimator instance
Estimator instance.