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_
. Ifcovariance_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 themonitor_
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 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 from estimator class and all its parent classes.
get_fitted_params
([deep])Get fitted parameters.
Get metadata routing of this object.
Get parameter defaults for the object.
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.
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.
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 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)
- instance of
- 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, 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 objectif
deep=True
, also contains keys/value pairs of component parameters parameters of components are indexed as[componentname]__[paramname]
all parameters ofcomponentname
appear asparamname
with its valueif
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.
- 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 totype(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 “_”.