分解器#

移除时间序列趋势并返回分解成分的组件。

模块内容#

类摘要#

Decomposer

移除时间序列趋势和季节性并返回分解成分的组件。

内容#

class evalml.pipelines.components.transformers.preprocessing.decomposer.Decomposer(component_obj=None, random_seed: int = 0, degree: int = 1, period: int = -1, seasonal_smoother: int = 7, time_index: str =None, **kwargs)[source]#

移除时间序列趋势和季节性并返回分解成分的组件。

参数
  • parameters (dict) – 要传递给组件对象的参数字典。

  • component_obj (class) – 去趋势/去季节性类的一个实例。

  • random_seed (int) – 随机数生成器的种子。默认为 0。

  • degree (int) – 当前是 PolynomialDecomposer 的次数,不用于 STLDecomposer。

  • period (int) – 季节性信号周期的最佳猜测,以单位表示。

  • seasonal_smoother (int) – STLDecomposer 的季节性平滑参数,不用于 PolynomialDecomposer。

  • time_index (str) – 应从中提取日期时间信息的特征矩阵 (X) 的列名。

属性

hyperparameter_ranges

invalid_frequencies

[]

modifies_features

False

modifies_target

True

name

Decomposer

needs_fitting

True

training_only

False

方法

clone

构建一个具有相同参数和随机状态的新组件。

default_parameters

返回此组件的默认参数。

describe

描述一个组件及其参数。

determine_periodicity

使用自相关方法确定季节性信号最可能显著周期的函数。

fit

将组件拟合到数据。

fit_transform

从目标变量中移除拟合的趋势和季节性。

get_trend_dataframe

返回一个数据帧列表,每个数据帧包含 3 列:趋势、季节性和残差。

inverse_transform

将趋势 + 季节性加回 y。

is_freq_valid

确定给定的字符串是否表示此分解器的有效频率。

load

从文件路径加载组件。

parameters

返回用于初始化组件的参数。

plot_decomposition

绘制目标信号的分解图。

save

将组件保存到文件路径。

set_period

根据目标的季节性设置组件季节性周期的函数。

transform

转换数据 X。

update_parameters

更新组件的参数字典。

clone(self)#

构建一个具有相同参数和随机状态的新组件。

返回值

此组件的一个新实例,具有相同的参数和随机状态。

default_parameters(cls)#

返回此组件的默认参数。

我们的约定是 Component.default_parameters == Component().parameters。

返回值

此组件的默认参数。

返回类型

dict

describe(self, print_name=False, return_dict=False)#

描述一个组件及其参数。

参数
  • print_name (bool, optional) – 是否打印组件名称

  • return_dict (bool, optional) – 是否以字典格式 {“name”: name, “parameters”: parameters} 返回描述

返回值

如果 return_dict 为 True,则返回字典;否则返回 None。

返回类型

None 或 dict

classmethod determine_periodicity(cls, X: pandas.DataFrame, y: pandas.Series, acf_threshold: float = 0.01, rel_max_order: int = 5)[source]#

使用自相关方法确定季节性信号最可能显著周期的函数。

参数
  • X (pandas.DataFrame) – 时间序列问题的特征数据。

  • y (pandas.Series) – 时间序列问题的目标数据。

  • acf_threshold (float) – 用于确定周期的自相关函数阈值。低于此阈值的任何值都被视为 0,不会被考虑用于确定周期。默认为 0.01。

  • rel_max_order (int) – 用于确定周期的相对最大值的阶数。默认为 5。

返回值

时间序列数据中目标数据季节性部分重复的整数条目数。

如果时间序列数据以天为单位,则这是目标季节性信号重复的天数。注意:目标数据可以包含多个季节性信号。此函数仅返回更强的信号。例如,如果目标数据同时包含周和年的季节性,此函数可能会返回“7”或“365”,具体取决于哪种季节性自相关性更强。如果未检测到周期,则返回 None。

返回类型

int

fit(self, X, y=None)#

将组件拟合到数据。

参数
  • X (pd.DataFrame) – 输入训练数据,形状为 [n_samples, n_features]

  • y (pd.Series, optional) – 目标训练数据,长度为 [n_samples]

返回值

self

引发

MethodPropertyNotFoundError – 如果组件没有 fit 方法或 component_obj 没有实现 fit 方法。

fit_transform(self, X: pandas.DataFrame, y: pandas.Series = None) tuple[pandas.DataFrame, pandas.Series][source]#

从目标变量中移除拟合的趋势和季节性。

参数
  • X (pd.DataFrame, optional) – 忽略。

  • y (pd.Series) – 要去除趋势和季节性的目标变量。

返回值

第一个元素是未修改返回的输入特征。

第二个元素是已移除拟合趋势的目标变量 y。

返回类型

tuple of pd.DataFrame, pd.Series

abstract get_trend_dataframe(self, y: pandas.Series)[source]#

返回一个数据帧列表,每个数据帧包含 3 列:趋势、季节性和残差。

abstract inverse_transform(self, y: pandas.Series)[source]#

将趋势 + 季节性加回 y。

classmethod is_freq_valid(cls, freq: str)[source]#

确定给定的字符串是否表示此分解器的有效频率。

参数

freq (str) – 要验证的频率。选项请参阅 pandas 文档:https://pandas.ac.cn/pandas-docs/stable/user_guide/timeseries.html#offset-aliases

返回值

一个布尔值,表示频率是否有效。

static load(file_path)#

从文件路径加载组件。

参数

file_path (str) – 文件加载位置。

返回值

ComponentBase 对象

property parameters(self)#

返回用于初始化组件的参数。

plot_decomposition(self, X: pandas.DataFrame, y: Union[pandas.Series, pandas.DataFrame], show: bool = False) Union[tuple[matplotlib.pyplot.Figure, list], dict[str, tuple[matplotlib.pyplot.Figure]]][source]#

绘制目标信号的分解图。

参数
  • X (pd.DataFrame) – 输入数据,索引中包含时间序列数据。

  • y (pd.Series or pd.DataFrame) – 作为 Series 提供的用于单变量问题的目标变量数据,或作为 DataFrame 提供的用于多变量问题的数据。

  • show (bool) – 是否显示图表。默认为 False。

返回值

包含分解绘制在其上的图表和轴

绘制在其上

(多序列) dict[str, (matplotlib.pyplot.Figure, list[matplotlib.pyplot.Axes])]: 将序列 ID 映射到

包含分解绘制在其上的图表和轴的字典

返回类型

(单序列) matplotlib.pyplot.Figure, list[matplotlib.pyplot.Axes]

save(self, file_path, pickle_protocol=cloudpickle.DEFAULT_PROTOCOL)#

将组件保存到文件路径。

参数
  • file_path (str) – 文件保存位置。

  • pickle_protocol (int) – pickle 数据流格式。

set_period(self, X: pandas.DataFrame, y: pandas.Series, acf_threshold: float = 0.01, rel_max_order: int = 5)[source]#

根据目标的季节性设置组件季节性周期的函数。

参数
  • X (pandas.DataFrame) – 时间序列问题的特征数据。

  • y (pandas.Series) – 时间序列问题的目标数据。

  • acf_threshold (float) – 用于确定周期的自相关函数阈值。低于此阈值的任何值都被视为 0,不会被考虑用于确定周期。默认为 0.01。

  • rel_max_order (int) – 用于确定周期的相对最大值的阶数。默认为 5。

abstract transform(self, X, y=None)#

转换数据 X。

参数
  • X (pd.DataFrame) – 要转换的数据。

  • y (pd.Series, optional) – 目标数据。

返回值

转换后的 X

返回类型

pd.DataFrame

引发

MethodPropertyNotFoundError – 如果转换器没有 transform 方法或 component_obj 没有实现 transform 方法。

update_parameters(self, update_dict, reset_fit=True)#

更新组件的参数字典。

参数
  • update_dict (dict) – 要更新的参数字典。

  • reset_fit (bool, optional) – 如果为 True,将 _is_fitted 设置为 False。