gluonts.model.npts 包#
- class gluonts.model.npts.KernelType(value)[source]#
基类:
str
,enum.Enum
一个枚举。
- exponential = 'exponential'#
- uniform = 'uniform'#
- class gluonts.model.npts.NPTSPredictor(prediction_length: int, context_length: Optional[int] = None, kernel_type: gluonts.model.npts._predictor.KernelType = KernelType.exponential, exp_kernel_weights: Union[float, List[float]] = 1.0, use_seasonal_model: bool = True, use_default_time_features: bool = True, num_default_time_features: int = 1, feature_scale: float = 1000.0)[source]#
基类:
gluonts.model.predictor.RepresentablePredictor
非参数时间序列预测器 (Non-Parametric Time Series Forecaster) 的实现。
时间步长 \(T\) 的 NPTS 预测是时间序列的先前值之一(这些值可以是已知值或预测值),根据 (未归一化的) 分布 \(q_T(t) > 0\) 进行采样,其中 \(0 <= t < T\)。
分布 \(q_T\) 用特征映射 \(f(t)\) 来表达,它将时间步长 \(t\) 与 \(D\) 维特征映射 \([f_1(t), ..., f_D(t)]\) 相关联。有关特征映射的更多详细信息,请参见下文。
我们提供两种类型的分布核。
指数核 (NPTS Forecaster)
指数 核的采样分布 \(q_T\) 可以是加权的或非加权的,其定义如下。
\[\begin{split}q_T(t) = \begin{cases} \exp( - \sum_{i=1}^D \alpha \left| f_i(t) - f_i(T) \right| ) & \text{未加权}\\ \exp( - \sum_{i=1}^D \alpha_i \left| f_i(t) - f_i(T) \right| ) & \text{加权} \end{cases}\end{split}\]在上述定义中,\(\alpha > 0\) 和 \(\alpha_i > 0\) 是用户定义的采样权重。
均匀核 (Climatological Forecaster)
均匀 核的采样分布 \(q_T\) 可以是季节性的或非季节性的。季节性版本的定义如下。
\[\begin{split}q_T(t) = \begin{cases} 1.0 & \text{如果 }f(t) = f(T) \\ 0.0 & \text{否则} \end{cases}\end{split}\]非季节性版本被定义为常数映射。
\[q_T(t) = 1.0\]特征映射
特征映射 \(f\) 是可配置的。特例 \(f(t) = [t]\) 导致所谓的朴素 NPTS。对于非季节性模型,默认情况下,NPTS Forecaster (即,使用指数核) 的 \(f(t) = [t]\),而 Climatological Forecaster (即,均匀核) 没有特征。
对于季节性 NPTS 和季节性 Climatological,时间特征根据时间序列的频率确定,并添加到默认特征映射中。
不同频率的默认时间特征是
\[\begin{split}f(t) = \begin{cases} [\mathit{MINUTE\_OF\_HOUR}(t)] & \text{for minutely frequency}\\ [\mathit{HOUR\_OF\_DAY}(t)] & \text{for hourly frequency}\\ [\mathit{DAY\_OF\_WEEK}(t)] & \text{for daily frequency}\\ [\mathit{DAY\_OF\_MONTH}(t)] & \text{for weekly frequency}\\ [\mathit{MONTH\_OF\_YEAR}(t)] & \text{for monthly frequency} \end{cases}\end{split}\]在预测期间,可以在 feat_dynamic_real 中提供自定义特征(这些特征必须在训练和预测范围内都定义)。如果模型是季节性的,这些自定义特征将添加到默认特征映射中,否则它们将被忽略。如果 feat_dynamic_real 非空,可以通过将标志 use_default_time_features 设置为 False 来禁用默认时间特征。
- 参数
prediction_length – 要预测的时间步长数量
context_length – 在进行预测之前考虑的时间步长数量(默认值 None 对应于考虑历史中所有时间步长的情况)
kernel_type – 要使用的核类型(“exponential” 或 “uniform”)
exp_kernel_weights – 在指数核中用于特征的单个权重 \(\alpha\) 或权重列表;目前,我们使用单个权重版本,对于季节性 NPTS,我们仅将 \(\alpha\) 按季节性特征的 feature_scale 进行重新缩放。
use_seasonal_model – 是否使用季节性变体
use_default_time_features – 基于时间序列频率导出的时间特征
num_default_time_features – 此参数未公开;此参数用于更好地控制默认时间特征的数量,因为 date_feature_set 默认添加了太多特征。
feature_scale – 时间(季节性)特征的比例因子,以便以更高的概率采样过去的季节
- predict(dataset: gluonts.dataset.Dataset, num_samples: int = 100, **kwargs) Iterator[gluonts.model.forecast.SampleForecast] [source]#
计算给定数据集中时间序列的预测。此方法在此抽象类中未实现;请使用其子类之一。:param dataset: 包含要预测的时间序列的数据集。
- 返回
预测结果的迭代器,顺序与提供的数据集迭代器相同。
- 返回类型
Iterator[Forecast]
- predict_time_series(ts: pandas.core.series.Series, num_samples: int, custom_features: Optional[numpy.ndarray] = None, item_id: Optional[Any] = None) gluonts.model.forecast.SampleForecast [source]#
给定一个训练时间序列,此方法生成包含 prediction_length 个时间点预测样本的 Forecast 对象。
通过加权采样生成预测,权重由 NPTSPredictor 的核类型和特征映射确定。
- 参数
ts – 训练时间序列对象
custom_features – 要使用的自定义特征(协变量)
num_samples – 要抽取的样本数量
item_id – 用于标识时间序列的 item_id
- 返回
对提供的 ts 和 custom_features 的预测。
- 返回类型