pyts.transformation.BagOfPatterns

class pyts.transformation.BagOfPatterns(window_size=0.5, word_size=0.5, n_bins=4, strategy='normal', numerosity_reduction=True, window_step=1, norm_mean=True, norm_std=True, sparse=True, overlapping=True, alphabet=None)[来源]

时间序列的Bag-of-patterns表示方法。

该算法使用滑动窗口从时间序列中提取子序列,并通过分段聚合近似和符号化聚合近似算法将每个子序列转换为一个单词。因此,它将每个时间序列转换为一袋单词。然后计算每个时间序列中每个单词的出现频率。

Parameters:
window_size : int or float (default = 0.5)

滑动窗口的长度。如果是浮点数,表示每个时间序列大小的百分比,必须在0到1之间。

word_size : int or float (default = 0.5)

单词长度。如果是浮点数,则表示滑动窗口长度的百分比,必须在0到1之间。

n_bins : int (default = 4)

要生成的箱数。该值必须在2到min(window_size, 26)之间。

strategy : ‘uniform’, ‘quantile’ or ‘normal’ (default = ‘normal’)

用于定义分箱宽度的策略:

  • ‘uniform’: 每个样本中的所有箱宽度相同
  • 'quantile': 每个样本中的所有分箱具有相同数量的数据点
  • ‘normal’: 箱边缘为标准正态分布的分位数
numerosity_reduction : bool (default = True)

如果为True,则删除样本中除一个之外的所有连续出现的相同单词。

window_step : int or float (default = 1)

滑动窗口的步长。如果是浮点数,表示每个时间序列大小的百分比,必须在0到1之间。滑动窗口的步长将计算为ceil(window_step * n_timestamps)

norm_mean : bool (default = True)

如果为True,在缩放前对每个子序列进行居中处理。

norm_std : bool (default = True)

如果为True,将每个子序列缩放为单位方差。

sparse : bool (default = True)

如果为True则返回稀疏矩阵,否则返回数组。

overlapping : bool (default = True)

如果为True,在使用分段聚合近似算法减小子序列长度时,时间点可能属于两个分箱。如果为False,每个时间点仅属于单一分箱,但分箱的尺寸可能会变化。

alphabet : None or array-like, shape = (n_bins,)

使用的字母表。如果为None,则使用拉丁字母表的前n_bins个字母。

参考文献

[1]J. Lin, R. Khade 和 Y. Li 合著的《基于词袋模式表示的时间序列旋转不变相似性》。发表于《智能信息系统期刊》,39卷(2期),287-315页(2012年)。

示例

>>> import numpy as np
>>> from pyts.transformation import BagOfPatterns
>>> X = np.arange(12).reshape(2, 6)
>>> bop = BagOfPatterns(window_size=4, word_size=4, sparse=False)
>>> bop.fit_transform(X)
array(...)
>>> bop.set_params(numerosity_reduction=False)
BagOfPatterns(...)
>>> bop.fit_transform(X)
array(...)
属性:
vocabulary_ dict

特征索引到术语的映射。

方法

__init__([window_size, word_size, n_bins, …]) Initialize self.
fit(X[, y]) Learn the dictionary.
fit_transform(X[, y]) Derive word frequencies for each time series.
get_params([deep]) Get parameters for this estimator.
set_params(**params) Set the parameters of this estimator.
transform(X) Derive word frequencies for each time series.
__init__(window_size=0.5, word_size=0.5, n_bins=4, strategy='normal', numerosity_reduction=True, window_step=1, norm_mean=True, norm_std=True, sparse=True, overlapping=True, alphabet=None)[来源]

初始化自身。查看 help(type(self)) 获取准确的签名信息。

fit(X, y=None)[来源]

学习字典。

参数:
X : array-like, shape = (n_samples, n_timestamps)

输入数据

y

忽略

返回值:
self : object
fit_transform(X, y=None)[来源]

为每个时间序列计算词频。

参数:
X : array-like, shape = (n_samples, n_timestamps)

待转换的数据。

y

忽略

返回值:
X_new : array, shape = (n_samples, n_words)

词频统计。

get_params(deep=True)

获取此估计器的参数。

参数:
deep : bool, default=True

如果为True,将返回此估计器及其包含的子估计器的参数。

返回值:
params : dict

参数名称映射到对应的值。

set_params(**params)

设置此估计器的参数。

该方法不仅适用于简单的估计器,也适用于嵌套对象(如Pipeline)。后者采用<component>__<parameter>形式的参数,从而可以更新嵌套对象的每个组件。

参数:
**params : dict

估计器参数。

返回值:
self : 估计器实例

估计器实例。

transform(X)[来源]

为每个时间序列计算词频。

参数:
X : array-like, shape = (n_samples, n_timestamps)

待转换的数据。

返回值:
X_new : array, shape = (n_samples, n_words)

词频统计结果。

使用pyts.transformation.BagOfPatterns的示例

Bag of Patterns

模式袋

模式集合