Skip to content

WEASEL

WEASEL

class WEASEL(anova=True, bigrams=True, binning_strategy='information-gain', window_inc=2, p_threshold=0.05, alphabet_size=2, n_jobs=1, feature_selection='chi2', support_probabilities=False, random_state=None)[source]

Word Extraction for Time Series Classification (WEASEL).

Overview: Input n series length m WEASEL is a dictionary classifier that builds a bag-of-patterns using SFA for different window lengths and learns a logistic regression classifier on this bag.

There are these primary parameters:

  • alphabet_size: alphabet size

  • p-threshold: threshold used for chi^2-feature selection to select best words.

  • anova: select best l/2 fourier coefficients other than first ones

  • bigrams: using bigrams of SFA words

  • binning_strategy: the binning strategy used to discretise into SFA words.

WEASEL slides a window length w along the series. The w length window is shortened to an l length word through taking a Fourier transform and keeping the best l/2 complex coefficients using an anova one-sided test. These l coefficients are then discretised into alpha possible symbols, to form a word of length l. A histogram of words for each series is formed and stored. For each window-length a bag is created and all words are joint into one bag-of-patterns. Words from different window-lengths are discriminated by different prefixes. fit involves training a logistic regression classifier on the single bag-of-patterns.

predict uses the logistic regression classifier

Parameters:
anova: boolean, default=True

If True, the Fourier coefficient selection is done via a one-way ANOVA test. If False, the first Fourier coefficients are selected. Only applicable if labels are given

bigrams: boolean, default=True

whether to create bigrams of SFA words

binning_strategy: {“equi-depth”, “equi-width”, “information-gain”},
default=”information-gain”

The binning method used to derive the breakpoints.

window_inc: int, default=2

WEASEL create a BoP model for each window sizes. This is the increment used to determine the next window size.

p_threshold: int, default=0.05 (disabled by default)

Feature selection is applied based on the chi-squared test. This is the p-value threshold to use for chi-squared test on bag-of-words (lower means more strict). 1 indicates that the test should not be performed.

alphabet_sizedefault = 2

Number of possible letters (values) for each word.

feature_selection: {“chi2”, “none”, “random”}, default: chi2

Sets the feature selections strategy to be used. Chi2 reduces the number of words significantly and is thus much faster (preferred). If set to chi2,

p_threshold is applied. Random also reduces the number significantly. None applies not feature selectiona and yields large bag of words, e.g. much memory may be needed.

support_probabilities: bool, default: False

If set to False, a RidgeClassifierCV will be trained, which has higher accuracy and is faster, yet does not support predict_proba. If set to True, a LogisticRegression will be trained, which does support predict_proba(), yet is slower and typically less accuracy. predict_proba() is needed for example in Early-Classification like TEASER.

random_state: int or None, default=None

Seed for random, integer

Attributes:
n_classes_int

The number of classes.

classes_list

The classes labels.

See also

MUSE

Notes

For the Java version, see - Original Publication. - TSML.

References

[1]

Patrick Schäfer and Ulf Leser, “Fast and Accurate Time Series Classification

with WEASEL”, in proc ACM on Conference on Information and Knowledge Management, 2017, https://dl.acm.org/doi/10.1145/3132847.3132980

Examples

>>> from sktime.classification.dictionary_based import WEASEL
>>> from sktime.datasets import load_unit_test
>>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
>>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
>>> clf = WEASEL(window_inc=4)
>>> clf.fit(X_train, y_train)
WEASEL(...)
>>> y_pred = clf.predict(X_test)

Methods

check_is_fitted([method_name])

Check if the estimator has been fitted.

clone()

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

clone_tags(estimator[, tag_names])

Clone tags from another object as dynamic override.

create_test_instance([parameter_set])

Construct an instance of the class, using first test parameter set.

create_test_instances_and_names([parameter_set])

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

fit(X, y)

Fit time series classifier to training data.

fit_predict(X, y[, cv, change_state])

Fit and predict labels for sequences in X.

fit_predict_proba(X, y[, cv, change_state])

Fit and predict labels probabilities for sequences in X.

get_class_tag(tag_name[, tag_value_default])

Get class tag value from class, with tag level inheritance from parents.

get_class_tags()

Get class tags from class, with tag level inheritance from parent classes.

get_config()

Get config flags for self.

get_fitted_params([deep])

Get fitted parameters.

get_param_defaults()

Get object's parameter defaults.

get_param_names([sort])

Get object's parameter names.

get_params([deep])

Get a dict of parameters values for this object.

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

Get tag value from instance, with tag level inheritance and overrides.

get_tags()

Get tags from instance, with tag level inheritance and overrides.

get_test_params([parameter_set])

Return testing parameter settings for the estimator.

is_composite()

Check if the object is composed of other BaseObjects.

load_from_path(serial)

Load object from file location.

load_from_serial(serial)

Load object from serialized memory container.

predict(X)

Predicts labels for sequences in X.

predict_proba(X)

Predicts labels probabilities for sequences in X.

reset()

Reset the object to a clean post-init state.

save([path, serialization_format])

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

score(X, y)

Scores predicted labels against ground truth labels on X.

set_config(**config_dict)

Set config flags to given values.

set_params(**params)

Set the parameters of this object.

set_random_state([random_state, deep, ...])

Set random_state pseudo-random seed parameters for self.

set_tags(**tag_dict)

Set instance level tag overrides to given values.