【问题标题】:Time Series Classification with WEASEL使用 WEASEL 进行时间序列分类
【发布时间】:2021-04-05 01:43:05
【问题描述】:

时间序列分类的单词提取 (WEASEL) 算法从时间序列中提取单词,并为每个时间序列构建表示每个单词频率的特征。该算法包含在pyts 库中。可以在here 找到一个可视化相应变换的示例,但我正在努力实现一个工作分类器。这段代码为我提供了一个转换后的训练数据数组:

from pyts.datasets import load_gunpoint
from pyts.transformation import WEASEL

# Toy dataset 
X_train, _, y_train, _ = load_gunpoint(return_X_y=True)

# WEASEL transformation
weasel = WEASEL(word_size=2, n_bins=2, window_sizes=[12, 36], sparse=False)
X_weasel = weasel.fit_transform(X_train, y_train)

但是如何从这里开始呢?我会使用什么方法来实际使用这些转换后的数据来执行分类任务?我如何将转换后的测试数据输入到这个管道中?

【问题讨论】:

    标签: python time-series


    【解决方案1】:

    WEASEL 将时间序列转换为特征。因此,您可以在后续步骤中将这些特征用作任何常规分类器的输入,例如支持向量机。

    以您的示例为基础:

    from pyts.datasets import load_gunpoint
    from pyts.transformation import WEASEL
    from sklearn.svm import SVC
    
    # Toy dataset
    X_train, X_test, y_train, y_test = load_gunpoint(return_X_y=True)
    
    # WEASEL transformation
    weasel = WEASEL(word_size=2, n_bins=2, window_sizes=[12, 36], sparse=False)
    X_weasel = weasel.fit_transform(X_train, y_train)
    
    classifier = SVC()
    classifier.fit(X_weasel, y_train)
    print(classifier.score(weasel.transform(X_test), y_test))
    

    比分离转换和分类更好的方法是将它们组合在一个Pipeline 中。 那么您的示例将如下所示:

    from pyts.datasets import load_gunpoint
    from pyts.transformation import WEASEL
    from sklearn.svm import SVC
    from sklearn.pipeline import make_pipeline
    
    X_train, X_test, y_train, y_test = load_gunpoint(return_X_y=True)
    weasel_classifier = make_pipeline(
        WEASEL(word_size=2, n_bins=2, window_sizes=[12, 36], sparse=False), SVC()
    )
    weasel_classifier.fit(X_train, y_train)
    print(weasel_classifier.score(X_test, y_test))
    

    【讨论】:

      猜你喜欢
      • 2021-03-13
      • 2021-05-03
      • 2020-08-14
      • 1970-01-01
      • 2014-11-15
      • 2017-05-12
      • 2021-09-16
      • 2021-10-28
      相关资源
      最近更新 更多