class_docstr: 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_size : default = 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
  
  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
  
  Notes
  -----
  For the Java version, see
  - `Original Publication <https://github.com/patrickzib/SFA>`_.
  - `TSML <https://github.com/uea-machine-learning/tsml/blob/master/src/main/java
  /tsml/classifiers/dictionary_based/WEASEL.java>`_.
  
  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) # doctest: +SKIP
  >>> clf = WEASEL(window_inc=4) # doctest: +SKIP
  >>> clf.fit(X_train, y_train) # doctest: +SKIP
  WEASEL(...)
  >>> y_pred = clf.predict(X_test) # doctest: +SKIP
class_docstr_tok: ["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_size",":","default","=","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","References","--","--","--","--","--","..","[","1","]","Patrick","Sch\u00e4fer","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","Notes","--","--","-","For","the","Java","version",",","see","-","`","Original","Publication","<","https",":","\/\/github.com\/patrickzib\/SFA",">","`","_",".","-","`","TSML","<","https",":","\/\/github.com\/uea-machine-learning\/tsml\/blob\/master\/src\/main\/java","\/tsml\/classifiers\/dictionary_based\/WEASEL.java",">","`","_",".","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",")","#","doctest",":","+SKIP",">",">",">","clf","=","WEASEL","(","window_inc=4",")","#","doctest",":","+SKIP",">",">",">","clf.fit","(","X_train",",","y_train",")","#","doctest",":","+SKIP","WEASEL","(","...",")",">",">",">","y_pred","=","clf.predict","(","X_test",")","#","doctest",":","+SKIP"]
code: def _transform_words(self, X):
      parallel_res = Parallel(
          n_jobs=self._threads_to_use, backend="threading"
      )(
          delayed(transformer.transform)(X)
          for transformer in self.SFA_transformers
      )
      all_words = []
      for sfa_words in parallel_res:
          all_words.append(sfa_words)
      if type(all_words[0]) is np.ndarray:
          all_words = np.concatenate(all_words, axis=1)
      else:
          all_words = hstack(all_words)
  
      return all_words
  
file_path: sktime/sktime/classification/dictionary_based/_weasel.py
imports: import math
  import numpy
  from joblib import Parallel, delayed
  from scipy.sparse import hstack
  from sklearn.linear_model import LogisticRegression, RidgeClassifierCV
  from sklearn.utils import check_random_state
  from sktime.classification.base import BaseClassifier
  from sktime.transformations.panel.dictionary_based import SFAFast
label_desc: Use image node_id 5 for calling the WEASEL obj's underlying member method code with example usage: obj._transform_words(X) and returns: all_words