pyts.decomposition.SingularSpectrumAnalysis

class pyts.decomposition.SingularSpectrumAnalysis(window_size=4, groups=None, lower_frequency_bound=0.075, lower_frequency_contribution=0.85, chunksize=None, n_jobs=1)[来源]

奇异谱分析。

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

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

groups : None, int, ‘auto’, or array-like (default = None)

基本矩阵的分组方式。如果为None,则不进行分组。如果是一个整数,它表示组的数量,组的边界计算为np.linspace(0, window_size, groups + 1).astype('int64')。如果为'auto',则确定三个组,分别包含趋势、季节性和残差。如果是类数组,每个元素必须是类数组并包含每个组的索引。

lower_frequency_bound : float (default = 0.075)

用于表征趋势、季节性和残差分量的周期图边界。该值必须在0到0.5之间。当groups未设置为'auto'时此参数将被忽略。

lower_frequency_contribution : float (default = 0.85)

通过考虑周期图来表征趋势、季节性和残差分量的相对阈值。该值必须在0到1之间。如果groups未设置为'auto',则忽略此参数。

chunksize : int or None (default = None)

如果为整数,则使用分块(批次)对整个数据集执行转换,chunksize对应每个分块(批次)的最大大小。如果为None,则一次性对整个数据集执行转换。使用分块执行转换可能会稍慢一些,但需要更少的内存。

n_jobs : None or int (default = None)

用于计算的作业数量。仅在chunksize设置为整数时使用。

参考文献

[1]N. Golyandina 和 A. Zhigljavsky,《时间序列的奇异谱分析》。Springer-Verlag Berlin Heidelberg (2013)。
[2]T. Alexandrov, "使用奇异谱分析进行趋势提取的方法", REVSTAT (2008).

示例

>>> from pyts.datasets import load_gunpoint
>>> from pyts.decomposition import SingularSpectrumAnalysis
>>> X, _, _, _ = load_gunpoint(return_X_y=True)
>>> transformer = SingularSpectrumAnalysis(window_size=5)
>>> X_new = transformer.transform(X)
>>> X_new.shape
(50, 5, 150)

方法

__init__([window_size, groups, …]) Initialize self.
fit([X, y]) Pass.
fit_transform(X[, y]) Fit to data, then transform it.
get_params([deep]) Get parameters for this estimator.
set_params(**params) Set the parameters of this estimator.
transform(X) Transform the provided data.
__init__(window_size=4, groups=None, lower_frequency_bound=0.075, lower_frequency_contribution=0.85, chunksize=None, n_jobs=1)[来源]

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

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

通过。

参数:
X

忽略

y

忽略

返回值:
self : object
fit_transform(X, y=None, **fit_params)

拟合数据,然后进行转换。

使用可选参数fit_params将转换器适配到Xy,并返回转换后的X版本。

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

单变量时间序列。

y : None or array-like, shape = (n_samples,) (default = None)

目标值(无监督转换时为None)。

**fit_params : dict

额外的拟合参数。

返回值:
X_new : array

转换后的数组。

get_params(deep=True)

获取此估计器的参数。

参数:
deep : bool, default=True

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

返回值:
params : dict

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

set_params(**params)

设置此估计器的参数。

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

参数:
**params : dict

估计器参数。

返回值:
self : 估计器实例

估计器实例。

transform(X)[来源]

转换提供的数据。

参数:
X : 类数组, 形状 = (n_samples, n_timestamps)
Returns:
X_new : array-like, shape = (n_samples, n_splits, n_timestamps)

转换后的数据。n_splits的值取决于groups的值。如果groups=None,则n_splits等于window_size。如果groups是整数,则n_splits等于groups。如果groups='auto',则n_splits等于3。如果groups是类数组对象,则n_splits等于groups的长度。如果n_splits=1,则X_new会被压缩,其形状为(n_samples, n_timestamps)。

使用pyts.decomposition.SingularSpectrumAnalysis的示例

Singular Spectrum Analysis

奇异谱分析

奇异谱分析
Trend-Seasonal decomposition with Singular Spectrum Analysis

基于奇异谱分析的趋势-季节性分解

基于奇异谱分析的趋势-季节性分解