MultiRocket

class MultiRocket(num_kernels=6250, max_dilations_per_kernel=32, n_features_per_kernel=4, normalise=False, n_jobs=1, random_state=None)[source]

Multi RandOm Convolutional KErnel Transform (MultiRocket).

MultiRocket [1] uses the same set of kernels as MiniRocket on both the raw series and the first order differenced series representation. It uses a different set of dilations and used for each representation. In addition to percentage of positive values (PPV), MultiRocket adds 3 pooling operators: Mean of Positive Values (MPV); Mean of Indices of Positive Values (MIPV); and Longest Stretch of Positive Values (LSPV).

Parameters:
num_kernelsint, default = 6,250

Number of random convolutional kernels. The calculated number of features is the nearest multiple of n_features_per_kernel(default 4)*84=336 < 50,000 (2*n_features_per_kernel(default 4)*num_kernels(default 6,250)).

max_dilations_per_kernelint, default = 32

Maximum number of dilations per kernel.

n_features_per_kernelint, default = 4

Number of features per kernel.

normalisebool, default False

Whether or not to normalise the input time series per instance.

n_jobsint, default=1

The number of jobs to run in parallel for transform. -1 means using all processors.

random_stateNone or int, default = None

Seed for random number generation.

Attributes:
parametertuple

Parameter (dilations, n_features_per_dilation, biases) for transformation of input X.

parameter1tuple

Parameter (dilations, n_features_per_dilation, biases) for transformation of input X1 = np.diff(X, 1).

See also

MiniRocket, Rocket

References

[1]

Tan, Chang Wei and Dempster, Angus and Bergmeir, Christoph and

Webb, Geoffrey I, “MultiRocket: Multiple pooling operators and transformations for fast and effective time series classification”,2022, https://link.springer.com/article/10.1007/s10618-022-00844-1 https://arxiv.org/abs/2102.00457

Examples

>>> from aeon.transformations.collection.convolution_based import MultiRocket
>>> from aeon.datasets import load_unit_test
>>> X_train, y_train = load_unit_test(split="train")
>>> X_test, y_test = load_unit_test(split="test")
>>> trf = MultiRocket(num_kernels=512)
>>> trf.fit(X_train)
MultiRocket(num_kernels=512)
>>> X_train = trf.transform(X_train)
>>> X_test = trf.transform(X_test)

Methods

check_is_fitted()

Check if the estimator has been fitted.

clone([random_state])

Obtain a clone of the object with the same hyperparameters.

create_test_instance([parameter_set, ...])

Construct Estimator instance if possible.

fit(X[, y])

Fit transformer to X, optionally using y if supervised.

fit_transform(X[, y])

Fit to data, then transform it.

get_class_tag(tag_name[, tag_value_default, ...])

Get tag value from estimator class (only class tags).

get_class_tags()

Get class tags from estimator class and all its parent classes.

get_fitted_params([deep])

Get fitted parameters.

get_metadata_routing()

Get metadata routing of this object.

get_params([deep])

Get parameters for this estimator.

get_tag(tag_name[, tag_value_default, ...])

Get tag value from estimator class.

get_tags()

Get tags from estimator.

get_test_params([parameter_set])

Return testing parameter settings for the estimator.

inverse_transform(X[, y])

Inverse transform X and return an inverse transformed version.

load_from_path(serial)

Load object from file location.

load_from_serial(serial)

Load object from serialized memory container.

reset([keep])

Reset the object to a clean post-init state.

save([path])

Save serialized self to bytes-like object or to (.zip) file.

set_params(**params)

Set the parameters of this estimator.

set_tags(**tag_dict)

Set dynamic tags to given values.

transform(X[, y])

Transform X and return a transformed version.

check_is_fitted()[source]

Check if the estimator has been fitted.

Raises:
NotFittedError

If the estimator has not been fitted yet.

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.clone of self. Equal in value to type(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. If int, random_state is the seed used by the random number generator. If RandomState instance, random_state is the random number generator.

Returns:
estimatorobject

Instance of type(self), clone of self (see above)

classmethod create_test_instance(parameter_set='default', return_first=True)[source]

Construct Estimator instance if possible.

Calls the get_test_params method and returns an instance or list of instances using the returned dict or list of dict.

Parameters:
parameter_setstr, default=”default”

Name of the set of test parameters to return, for use in tests. If no special parameters are defined for a value, will return “default” set.

return_firstbool, default=True

If True, return the first instance of the list of instances. If False, return the list of instances.

Returns:
instanceBaseAeonEstimator or list of BaseAeonEstimator

Instance of the class with default parameters. If return_first is False, returns list of instances.

fit(X, y=None)[source]

Fit transformer to X, optionally using y if supervised.

State change:

Changes state to “fitted”.

Writes to self: _is_fitted : flag is set to True. model attributes (ending in “_”) : dependent on estimator

Parameters:
Xnp.ndarray or list

Input data, any number of channels, equal length series of shape ( n_cases, n_channels, 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), where n_timepoints_i is length of series i. 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. If self.get_tag( "capability:unequal_length") is False, they cannot handle unequal length input. In both situations, a ValueError is raised if X has a characteristic that the estimator does not have the capability to handle.

Data to fit transform to, of valid collection type.

ynp.ndarray, default=None

1D np.array of float or str, of shape (n_cases) - class labels (ground truth) for fitting indices corresponding to instance indices in X. If None, no labels are used in fitting.

Returns:
selfa fitted instance of the estimator
fit_transform(X, y=None)[source]

Fit to data, then transform it.

Fits the transformer to X and y and returns a transformed version of X.

State change:

Changes state to “fitted”.

Writes to self: _is_fitted : flag is set to True. model attributes (ending in “_”) : dependent on estimator.

Parameters:
Xnp.ndarray or list

Input data, any number of channels, equal length series of shape ( n_cases, n_channels, 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), where n_timepoints_i is length of series i. 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. If self.get_tag( "capability:unequal_length") is False, they cannot handle unequal length input. In both situations, a ValueError is raised if X has a characteristic that the estimator does not have the capability to handle.

Data to fit transform to, of valid collection type.

ynp.ndarray, default=None

1D np.array of float or str, of shape (n_cases) - class labels (ground truth) for fitting indices corresponding to instance indices in X. If None, no labels are used in fitting.

Returns:
transformed version of X
classmethod get_class_tag(tag_name, tag_value_default=None, raise_error=False)[source]

Get tag value from estimator class (only class tags).

Parameters:
tag_namestr

Name of tag value.

tag_value_defaultany type

Default/fallback value if tag is not found.

raise_errorbool

Whether a ValueError is raised when the tag is not found.

Returns:
tag_value

Value of the tag_name tag in self. If not found, returns an error if raise_error is True, otherwise it returns tag_value_default.

Raises:
ValueError

if raise_error is True and tag_name is not in self.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 _tags class attribute via nested inheritance. These are not overridden by dynamic tags set by set_tags or class __init__ calls.

get_fitted_params(deep=True)[source]

Get fitted parameters.

State required:

Requires state to be “fitted”.

Parameters:
deepbool, default=True

Whether to return fitted parameters of components.

  • If True, will return a dict of parameter name : value for this object, including fitted parameters of fittable components (= BaseAeonEstimator-valued parameters).

  • If False, will return a dict of parameter name : value for this object, but not include fitted parameters of components.

Returns:
fitted_paramsdict with str-valued keys

Dictionary of fitted parameters, paramname : paramvalue keys-value pairs include:

  • always: all fitted parameters of this object

  • if deep=True, also contains keys/value pairs of component parameters parameters of components are indexed as [componentname]__[paramname] all parameters of componentname appear as paramname with its value

  • if deep=True, also contains arbitrary levels of component recursion, e.g., [componentname]__[componentcomponentname]__[paramname], etc.

get_metadata_routing()[source]

Get metadata routing of this object.

Please check User Guide on how the routing mechanism works.

Returns:
routingMetadataRequest

A MetadataRequest encapsulating routing information.

get_params(deep=True)[source]

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, tag_value_default=None, raise_error=True)[source]

Get tag value from estimator class.

Includes dynamic and overridden tags.

Parameters:
tag_namestr

Name of tag to be retrieved.

tag_value_defaultany type, default=None

Default/fallback value if tag is not found.

raise_errorbool

Whether a ValueError is raised when the tag is not found.

Returns:
tag_value

Value of the tag_name tag in self. If not found, returns an error if raise_error is True, otherwise it returns tag_value_default.

Raises:
ValueError

if raise_error is True and tag_name is not in self.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 _tags class attribute via nested inheritance and then any overridden and new tags from __init__ or set_tags.

classmethod get_test_params(parameter_set='default')[source]

Return testing parameter settings for the estimator.

Parameters:
parameter_setstr, default=”default”

Name of the set of test parameters to return, for use in tests. If no special parameters are defined for a value, will return “default” set.

Returns:
paramsdict or list of dict, default = {}

Parameters to create testing instances of the class. Each dict are parameters to construct an “interesting” test instance, i.e., MyClass(**params) or MyClass(**params[i]) creates a valid test instance. create_test_instance uses the first (or only) dictionary in params.

inverse_transform(X, y=None)[source]

Inverse transform X and return an inverse transformed version.

Currently it is assumed that only transformers with tags

“input_data_type”=”Series”, “output_data_type”=”Series”,

can have an inverse_transform.

State required:

Requires state to be “fitted”.

Accesses in self:

_is_fitted : must be True fitted model attributes (ending in “_”) : accessed by _inverse_transform

Parameters:
Xnp.ndarray or list

Input data, any number of channels, equal length series of shape ( n_cases, n_channels, 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), where n_timepoints_i is length of series i. 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. If self.get_tag( "capability:unequal_length") is False, they cannot handle unequal length input. In both situations, a ValueError is raised if X has a characteristic that the estimator does not have the capability to handle.

Data to fit transform to, of valid collection type.

ynp.ndarray, default=None

1D np.array of float or str, of shape (n_cases) - class labels (ground truth) for fitting indices corresponding to instance indices in X. If None, no labels are used in fitting.

Returns:
inverse transformed version of X

of the same type as X

classmethod load_from_path(serial)[source]

Load object from file location.

Parameters:
serialobject

Result of ZipFile(path).open(“object).

Returns:
deserialized self resulting in output at path, of cls.save(path)
classmethod load_from_serial(serial)[source]

Load object from serialized memory container.

Parameters:
serialobject

First element of output of cls.save(None).

Returns:
deserialized self resulting in output serial, of cls.save(None).
reset(keep=None)[source]

Reset the object to a clean post-init state.

After a self.reset() call, self is equal or similar in value to type(self)(**self.get_params(deep=False)), assuming no other attributes were kept using keep.

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 of get_params)

Not affected by the reset are:

object attributes containing double-underscores class and object methods, class attributes any attributes specified in the keep argument

Parameters:
keepNone, str, or list of str, default=None

If None, all attributes are removed except hyper-parameters. If str, only the attribute with this name is kept. If list of str, only the attributes with these names are kept.

Returns:
self

Reference to self.

save(path=None)[source]

Save serialized self to bytes-like object or to (.zip) file.

Behaviour: if path is None, returns an in-memory serialized self if path is a file location, stores self at that location as a zip file

saved files are zip files with following contents: _metadata - contains class of self, i.e., type(self) _obj - serialized self. This class uses the default serialization (pickle).

Parameters:
pathNone or file location (str or Path).

if None, self is saved to an in-memory object if file location, self is saved to that file location. If:

path=”estimator” then a zip file estimator.zip will be made at cwd. path=”/home/stored/estimator” then a zip file estimator.zip will be stored in /home/stored/.

Returns:
if path is None - in-memory serialized self
if path is file location - ZipFile with reference to the file.
set_params(**params)[source]

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.

set_tags(**tag_dict)[source]

Set dynamic tags to given values.

Parameters:
**tag_dictdict

Dictionary of tag name and tag value pairs.

Returns:
self

Reference to self.

transform(X, y=None)[source]

Transform X and return a transformed version.

State required:

Requires state to be “fitted”.

Accesses in self: _is_fitted : must be True fitted model attributes (ending in “_”) : must be set, accessed by _transform

Parameters:
Xnp.ndarray or list

Input data, any number of channels, equal length series of shape ( n_cases, n_channels, 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), where n_timepoints_i is length of series i. 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. If self.get_tag( "capability:unequal_length") is False, they cannot handle unequal length input. In both situations, a ValueError is raised if X has a characteristic that the estimator does not have the capability to handle.

Data to fit transform to, of valid collection type.

ynp.ndarray, default=None

1D np.array of float or str, of shape (n_cases) - class labels (ground truth) for fitting indices corresponding to instance indices in X. If None, no labels are used in fitting.

Returns:
transformed version of X