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
参数名称映射到对应的值。