GaussianHMM#

class GaussianHMM(n_components: int = 1, covariance_type: str = 'diag', min_covar: float = 0.001, startprob_prior: float = 1.0, transmat_prior: float = 1.0, means_prior: float = 0, means_weight: float = 0, covars_prior: float = 0.01, covars_weight: float = 1, algorithm: str = 'viterbi', random_state: float | None = None, n_iter: int = 10, tol: float = 0.01, verbose: bool = False, params: str = 'stmc', init_params: str = 'stmc', implementation: str = 'log')[source]#

Hidden Markov Model with Gaussian emissions.

Parameters:
n_componentsint

Number of states

covariance_type{“spherical”, “diag”, “full”, “tied”}, optional

The type of covariance parameters to use: * “spherical” — each state uses a single variance value that

applies to all features.

  • “diag” — each state uses a diagonal covariance matrix

    (default).

  • “full” — each state uses a full (i.e. unrestricted)

    covariance matrix.

  • “tied” — all mixture components of each state use the same

    full covariance matrix (note that this is not the same as for GaussianHMM).

min_covarfloat, optional

Floor on the diagonal of the covariance matrix to prevent overfitting. Defaults to 1e-3.

means_prior, means_weightarray, shape (n_mix, ), optional

Mean and precision of the Normal prior distribtion for means_.

covars_prior, covars_weightarray, shape (n_mix, ), optional

Parameters of the prior distribution for the covariance matrix covars_. If covariance_type is “spherical” or “diag” the prior is the inverse gamma distribution, otherwise — the inverse Wishart distribution.

startprob_priorarray, shape (n_components, ), optional

Parameters of the Dirichlet prior distribution for startprob_.

transmat_priorarray, shape (n_components, n_components), optional

Parameters of the Dirichlet prior distribution for each row of the transition probabilities transmat_.

algorithm{“viterbi”, “map”}, optional

Decoder algorithm.

random_state: RandomState or an int seed, optional

A random number generator instance.

n_iterint, optional

Maximum number of iterations to perform.

tolfloat, optional

Convergence threshold. EM will stop if the gain in log-likelihood is below this value.

verbosebool, optional

Whether per-iteration convergence reports are printed to sys.stderr. Convergence can also be diagnosed using the monitor_ attribute.

params, init_paramsstring, optional

The parameters that get updated during (params) or initialized before (init_params) the training. Can contain any combination of ‘s’ for startprob, ‘t’ for transmat, ‘m’ for means and ‘c’ for covars. Defaults to all parameters.

implementation: string, optional

Determines if the forward-backward algorithm is implemented with logarithms (“log”), or using scaling (“scaling”). The default is to use logarithms for backwards compatability.

Attributes:
n_featuresint

Dimensionality of the Gaussian emissions.

monitor_ConvergenceMonitor

Monitor object used to check the convergence of EM.

startprob_array, shape (n_components, )

Initial state occupation distribution.

transmat_array, shape (n_components, n_components)

Matrix of transition probabilities between states.

means_array, shape (n_components, n_features)

Mean parameters for each state.

covars_array

Covariance parameters for each state. The shape depends on covariance_type: * (n_components, ) if “spherical”, * (n_components, n_features) if “diag”, * (n_components, n_features, n_features) if “full”, * (n_features, n_features) if “tied”.

Examples

>>> from aeon.annotation.hmm_learn import GaussianHMM 
>>> from from aeon.testing.utils.data_gen import piecewise_normal 
>>> data = piecewise_normal( 
...    means=[2, 4, 1], lengths=[10, 35, 40], random_state=7
...    ).reshape((-1, 1))
>>> model = GaussianHMM(algorithm='viterbi', n_components=2) 
>>> model = model.fit(data) 
>>> labeled_data = model.predict(data) 

Methods

check_is_fitted()

Check if the estimator has been fitted.

clone()

Obtain a clone of the object with same hyper-parameters.

clone_tags(estimator[, tag_names])

Clone/mirror tags from another estimator as dynamic override.

create_test_instance([parameter_set])

Construct Estimator instance if possible.

create_test_instances_and_names([parameter_set])

Create list of all test instances and a list of names for them.

fit(X[, Y])

Fit to training data.

fit_predict(X[, Y])

Fit to data, then predict 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_param_defaults()

Get parameter defaults for the object.

get_param_names()

Get parameter names for the 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 class.

get_test_params([parameter_set])

Return testing parameter settings for the estimator.

is_composite()

Check if the object is composite.

load_from_path(serial)

Load object from file location.

load_from_serial(serial)

Load object from serialized memory container.

predict(X)

Create annotations on test/deployment data.

predict_scores(X)

Return scores for predicted annotations on test/deployment data.

reset()

Reset the object to a clean post-init state.

sample([n_samples, random_state, currstate])

Interface class which allows users to sample from their HMM.

save([path])

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

set_params(**params)

Set the parameters of this object.

set_tags(**tag_dict)

Set dynamic tags to given values.

update(X[, Y])

Update model with new data and optional ground truth annotations.

update_predict(X)

Update model with new data and create annotations for it.

classmethod get_test_params(parameter_set: str = 'default') Dict[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
check_is_fitted()[source]#

Check if the estimator has been fitted.

Raises:
NotFittedError

If the estimator has not been fitted yet.

clone()[source]#

Obtain a clone of the object with same hyper-parameters.

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)).

Returns:
instance of type(self), clone of self (see above)
clone_tags(estimator, tag_names=None)[source]#

Clone/mirror tags from another estimator as dynamic override.

Parameters:
estimatorobject

Estimator inheriting from :class:BaseEstimator.

tag_namesstr or list of str, default = None

Names of tags to clone. If None then all tags in estimator are used as tag_names.

Returns:
Self

Reference to self.

Notes

Changes object state by setting tag values in tag_set from estimator as dynamic tags in self.

classmethod create_test_instance(parameter_set='default')[source]#

Construct Estimator instance if possible.

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:
instanceinstance of the class with default parameters.

Notes

get_test_params can return dict or list of dict. This function takes first or single dict that get_test_params returns, and constructs the object with that.

classmethod create_test_instances_and_names(parameter_set='default')[source]#

Create list of all test instances and a list of names for them.

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:
objslist of instances of cls

i-th instance is cls(**cls.get_test_params()[i]).

nameslist of str, same length as objs

i-th element is name of i-th instance of obj in tests convention is {cls.__name__}-{i} if more than one instance otherwise {cls.__name__}.

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.

fit(X, Y=None)[source]#

Fit to training data.

Parameters:
Xpd.DataFrame

Training data to fit model to (time series).

Ypd.Series, optional

Ground truth annotations for training if annotator is supervised.

Returns:
self

Reference to self.

Notes

Creates fitted model that updates attributes ending in “_”. Sets _is_fitted flag to True.

fit_predict(X, Y=None)[source]#

Fit to data, then predict it.

Fits model to X and Y with given annotation parameters and returns the annotations made by the model.

Parameters:
Xpd.DataFrame, pd.Series or np.ndarray

Data to be transformed

Ypd.Series or np.ndarray, optional (default=None)

Target values of data to be predicted.

Returns:
selfpd.Series

Annotations for sequence X exact format depends on annotation type.

classmethod get_class_tag(tag_name, tag_value_default=None)[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.

Returns:
tag_value

Value of the tag_name tag in self. If not found, returns tag_value_default.

See also

get_tag

Get a single tag from an object.

get_tags

Get all tags from an object.

get_class_tag

Get a single tag from a class.

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 : tag value pairs. Collected from _tags class attribute via nested inheritance. NOT overridden by dynamic tags set by set_tags or mirror_tags.

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 (= BaseEstimator-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, as via get_param_names values are fitted parameter value for that key, 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.

classmethod get_param_defaults()[source]#

Get parameter defaults for the object.

Returns:
default_dict: dict with str keys

keys are all parameters of cls that have a default defined in __init__ values are the defaults, as defined in __init__.

classmethod get_param_names()[source]#

Get parameter names for the object.

Returns:
param_names: list of str, alphabetically sorted list of parameter names of cls
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.

Uses dynamic tag overrides.

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 i.e. if tag_name is not in self.get_tags(
).keys()

See also

get_tags

Get all tags from an object.

get_clas_tags

Get all tags from a class.

get_class_tag

Get a single tag from a class.

Examples

>>> from aeon.classification import DummyClassifier
>>> d = DummyClassifier()
>>> d.get_tag("capability:multivariate")
True
get_tags()[source]#

Get tags from estimator class.

Includes the dynamic tag overrides.

Returns:
dict

Dictionary of tag name : tag value pairs. Collected from _tags class attribute via nested inheritance and then any overrides and new tags from _tags_dynamic object attribute.

See also

get_tag

Get a single tag from an object.

get_clas_tags

Get all tags from a class.

get_class_tag

Get a single tag from a class.

Examples

>>> from aeon.classification import DummyClassifier
>>> d = DummyClassifier()
>>> tags = d.get_tags()
is_composite()[source]#

Check if the object is composite.

A composite object is an object which contains objects, as parameters. Called on an instance, since this may differ by instance.

Returns:
composite: bool

Whether self contains a parameter which is BaseObject.

property is_fitted[source]#

Whether fit has been called.

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).
predict(X)[source]#

Create annotations on test/deployment data.

Parameters:
Xpd.DataFrame

Data to annotate (time series).

Returns:
Ypd.Series

Annotations for sequence X exact format depends on annotation type.

predict_scores(X)[source]#

Return scores for predicted annotations on test/deployment data.

Parameters:
Xpd.DataFrame

Data to annotate (time series).

Returns:
Ypd.Series

Scores for sequence X exact format depends on annotation type.

reset()[source]#

Reset the object to a clean post-init state.

Equivalent to sklearn.clone but overwrites self. After self.reset() call, self is equal in value to type(self)(**self.get_params(deep=False))

Detail 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 hyper-parameters (result of get_params)

Not affected by the reset are: object attributes containing double-underscores class and object methods, class attributes

sample(n_samples=1, random_state=None, currstate=None)[source]#

Interface class which allows users to sample from their HMM.

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 object.

The method works on simple estimators as well as on nested objects. The latter have parameters of the form <component>__<parameter> so that it’s possible to update each component of a nested object.

Parameters:
**paramsdict

BaseObject parameters

Returns:
selfreference to self (after parameters have been set)
set_tags(**tag_dict)[source]#

Set dynamic tags to given values.

Parameters:
**tag_dictdict

Dictionary of tag name : tag value pairs.

Returns:
Self

Reference to self.

Notes

Changes object state by setting tag values in tag_dict as dynamic tags in self.

update(X, Y=None)[source]#

Update model with new data and optional ground truth annotations.

Parameters:
Xpd.DataFrame

Training data to update model with (time series).

Ypd.Series, optional

Ground truth annotations for training if annotator is supervised.

Returns:
self

Reference to self.

Notes

Updates fitted model that updates attributes ending in “_”.

update_predict(X)[source]#

Update model with new data and create annotations for it.

Parameters:
Xpd.DataFrame

Training data to update model with, time series.

Returns:
Ypd.Series

Annotations for sequence X exact format depends on annotation type.

Notes

Updates fitted model that updates attributes ending in “_”.