BaseSegmenter¶
- class BaseSegmenter(axis, n_segments=2)[source]¶
Bases:
BaseSeriesEstimatorBase class for segmentation algorithms.
Segmenters take a single time series of length
n_timepointsand returns a segmentation. Series can be univariate (single series) or multivariate, withn_channelsdimensions. If the segmenter can handle multivariate series, if will have the tag"capability:multivariate"set to True. Multivariate series are segmented along a the axis of time determined byself.axis.Segmentation representation
Given a time series of 10 points with two change points found in position 4 and 8.
The segmentation can be output in two forms: a) A list of change points (tag
"returns_dense"is True).output example [4,8] for a series length 10 means three segments at positions (0,1,2,3), (4,5,6,7) and (8,9). This dense representation is the default behaviour, as it is the minimal representation. Indicated by tag “return_dense” being set to True. It is assumed to be sorted, and the first segment is assumed to start at position 0. Hence, the first change point must be greater than 0 and the last less than the series length. If the last value is
n_timepoints-1then the last point forms a single segment. An empty list indicates no change points.b) A list of integers of length m indicating the segment of each time point ( tag
"returns_dense"is False).output [0,0,0,0,1,1,1,1,2,2] or output [0,0,0,1,1,1,1,0,0,0] This sparse representation can be used to indicate shared segments indicating segment 1 is somehow the same (perhaps in generative process) as segment 3. Indicated by tag
return_densebeing set to False.Multivariate series are always segmented at the same points. If independent segmentation is required, fit a different segmenter to each channel.
- Parameters:
- axisint
Axis along which to segment if passed a multivariate series (2D input). If axis is 0, it is assumed each column is a time series and each row is a timepoint. i.e. the shape of the data is
(n_timepoints,n_channels).axis == 1indicates the time series are in rows, i.e. the shape of the data is ``(n_channels, n_timepoints)`. Each segmenter must specify the axis it assumes in the constructor and pass it to the base class.- n_segmentsint, default = 2
Number of segments to split the time series into. If None, then the number of segments needs to be found in fit.
Methods
clone([random_state])Obtain a clone of the object with the same hyperparameters.
fit(X[, y, axis])Fit time series segmenter to X.
fit_predict(X[, y, axis])Fit segmentation to data and return it.
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.
predict(X[, axis])Create amd return segmentation of X.
reset([keep])Reset the object to a clean post-init state.
set_params(**params)Set the parameters of this estimator.
set_tags(**tag_dict)Set dynamic tags to given values.
to_classification(change_points, length)Convert change point locations to a classification vector.
to_clusters(change_points, length)Convert change point locations to a clustering vector.
- 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)
- final fit(X, y=None, axis=1)[source]¶
Fit time series segmenter to X.
If the tag
fit_is_emptyis true, this just sets theis_fittedtag to true. Otherwise, it checksselfcan handleX, formatsXinto the structure required byselfthen passesX(and possiblyy) to_fit.- Parameters:
- XOne of
VALID_SERIES_INPUT_TYPES Input time series to fit a segmenter.
- yOne of
VALID_SERIES_INPUT_TYPESor None, default None Training time series, a labeled 1D series same length as X for supervised segmentation.
- axisint, default = None
Axis along which to segment if passed a multivariate X series (2D input). If axis is 0, it is assumed each column is a time series and each row is a time point. i.e. the shape of the data is
(n_timepoints, n_channels).axis == 1indicates the time series are in rows, i.e. the shape of the data is(n_channels, n_timepoints)`.``axis is Noneindicates that the axis of X is the same asself.axis.
- XOne of
- Returns:
- self
Fitted estimator
- 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.
- final predict(X, axis=1)[source]¶
Create amd return segmentation of X.
- Parameters:
- XOne of
VALID_SERIES_INPUT_TYPES Input time series
- axisint, default = None
Axis along which to segment if passed a multivariate series (2D input) with
n_channelstime series. If axis is 0, it is assumed each row is a time series and each column is a time point. i.e. the shape of the data is(n_timepoints,n_channels).axis == 1indicates the time series are in rows, i.e. the shape of the data is(n_channels, n_timepoints)`.``axis is Noneindicates that the axis of X is the same asself.axis.
- XOne of
- Returns:
- List
Either a list of indexes of X indicating where each segment begins or a list of integers of
len(X)indicating which segment each time point belongs to.
- 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.
- 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.
- set_tags(**tag_dict)[source]¶
Set dynamic tags to given values.
- Parameters:
- **tag_dictdict
Dictionary of tag name and tag value pairs.
- Returns:
- selfobject
Reference to
self.
- classmethod to_classification(change_points: list[int], length: int)[source]¶
Convert change point locations to a classification vector.
Change point detection results can be treated as classification with true change point locations marked with 1’s at position of the change point and remaining non-change point locations being 0’s.
For example change points [2, 8] for a time series of length 10 would result in: [0, 0, 1, 0, 0, 0, 0, 0, 1, 0].
- classmethod to_clusters(change_points: list[int], length: int)[source]¶
Convert change point locations to a clustering vector.
Change point detection results can be treated as clustering with each segment separated by change points assigned a distinct dummy label.
For example change points [2, 8] for a time series of length 10 would result in: [0, 0, 1, 1, 1, 1, 1, 1, 2, 2].