ForecastingHorizon#

class ForecastingHorizon(values=None, is_relative=None, freq=None)[source]#

预测范围。

参数:
valuespd.Index, pd.TimedeltaIndex, np.array, list, pd.Timedelta, 或 int

预测范围的值

is_relative布尔值, 可选 (默认为 None)
  • 如果为 True,则创建一个相对 ForecastingHorizon

    值相对于训练序列的末尾。

  • 如果为 False,则创建一个绝对 ForecastingHorizon

    值为绝对值。

  • 如果为 None,则自动确定标志

    如果值为支持的相对索引类型,则为相对 如果不是相对类型且值为支持的绝对索引类型,则为绝对

freqstr, pd.Index, pandas offset, 或 sktime 预测器, 可选 (默认为 None)

携带值频率信息的对象 除非值没有可推断的频率,否则忽略此参数

属性:
freq

频率属性。

is_relative

预测范围是否相对于训练序列的末尾。

示例

>>> from sktime.forecasting.base import ForecastingHorizon
>>> from sktime.forecasting.naive import NaiveForecaster
>>> from sktime.datasets import load_airline
>>> from sktime.split import temporal_train_test_split
>>> import numpy as np
>>> y = load_airline()
>>> y_train, y_test = temporal_train_test_split(y, test_size=6)

列表作为 ForecastingHorizon

>>> ForecastingHorizon([1, 2, 3])  
>>> # ForecastingHorizon([1, 2, 3], is_relative=True)

Numpy 作为 ForecastingHorizon

>>> ForecastingHorizon(np.arange(1, 7))  
>>> # ForecastingHorizon([1, 2, 3, 4, 5, 6], is_relative=True)

带有 pandas Index 的绝对 ForecastingHorizon

>>> ForecastingHorizon(y_test.index, is_relative=False) 
>>> # ForecastingHorizon(['1960-07', ..., '1960-12'], is_relative=False)

转换

>>> # set cutoff (last time point of training data)
>>> cutoff = y_train.index[-1]
>>> cutoff
Period('1960-06', 'M')
>>> # to_relative
>>> fh = ForecastingHorizon(y_test.index, is_relative=False)
>>> fh.to_relative(cutoff=cutoff)  
>>> # ForecastingHorizon([1, 2, 3, 4, 5, 6], is_relative=True)
>>> # to_absolute
>>> fh = ForecastingHorizon([1, 2, 3, 4, 5, 6], is_relative=True)
>>> fh = fh.to_absolute(cutoff=cutoff) 
>>> # ForecastingHorizon(['1960-07', ..., '1960-12'], is_relative=False)

调用 predict() 时从列表自动转换的 ForecastingHorizon

>>> forecaster = NaiveForecaster(strategy="drift")
>>> forecaster.fit(y_train)
NaiveForecaster(...)
>>> y_pred = forecaster.predict(fh=[1,2,3])
>>> forecaster.fh  
>>> # ForecastingHorizon([1, 2, 3], dtype='int64', is_relative=True)

这与提供一个 ForecastingHorizon 对象相同

>>> y_pred = forecaster.predict(fh=ForecastingHorizon([1,2,3]))
>>> forecaster.fh  
>>> # ForecastingHorizon([1, 2, 3], dtype='int64', is_relative=True)

方法

get_expected_pred_idx([y, cutoff, sort_by_time])

构建 y_pred 中预期的 DataFrame 索引,即 _predict 的返回值。

is_all_in_sample([cutoff])

预测范围对于给定的截止点是否完全在样本内。

is_all_out_of_sample([cutoff])

预测范围对于给定的截止点是否完全在样本外。

to_absolute(cutoff)

返回预测范围值的绝对版本。

to_absolute_index([cutoff])

返回范围的绝对值作为 pandas.Index。

to_absolute_int(start[, cutoff])

返回从 start 开始的零基整数索引的绝对值。

to_in_sample([cutoff])

返回 fh 的样本内索引值。

to_indexer([cutoff, from_cutoff])

返回零基索引器值,以便轻松对数组进行索引。

to_numpy(**kwargs)

将预测范围的基础值作为 np.array 返回。

to_out_of_sample([cutoff])

返回 fh 的样本外值。

to_pandas()

将预测范围的基础值作为 pd.Index 返回。

to_relative([cutoff])

返回相对于截止点的预测范围值。

property is_relative: bool[source]#

预测范围是否相对于训练序列的末尾。

返回:
is_relative布尔值
property freq: str[source]#

频率属性。

返回:
freqpandas 频率字符串
to_pandas() Index[source]#

将预测范围的基础值作为 pd.Index 返回。

返回:
fhpd.Index

包含预测范围基础值的 pandas Index。

to_numpy(**kwargs) ndarray[source]#

将预测范围的基础值作为 np.array 返回。

参数:
**kwargskwargs 字典

传递给包装的 pandas index 的 to_numpy() 的 kwargs。

返回:
fhnp.ndarray

包含预测范围基础值的 NumPy 数组。

to_relative(cutoff=None)[source]#

返回相对于截止点的预测范围值。

参数:
cutoffpd.Period, pd.Timestamp, int, 或 pd.Index, 可选 (默认为 None)

将相对预测范围转换为绝对预测范围(反之亦然)所需的截止点值。如果为 pd.Index,则最后一个/最新的值被视为截止点

返回:
fhForecastingHorizon

预测范围的相对表示。

to_absolute(cutoff)[source]#

返回预测范围值的绝对版本。

参数:
cutoffpd.Period, pd.Timestamp, int, 或 pd.Index

将相对预测范围转换为绝对预测范围(反之亦然)所需的截止点值。如果为 pd.Index,则最后一个/最新的值被视为截止点

返回:
fhForecastingHorizon

预测范围的绝对表示。

to_absolute_index(cutoff=None)[source]#

返回范围的绝对值作为 pandas.Index。

对于一个预测器 f,如果其 fhself,则此方法使用 cutoff=f.cutoff 返回的值与预测器的预测方法(例如 f.predictf.predict_interval)返回的预期索引相同

参数:
cutoffpd.Period, pd.Timestamp, int, 或 pd.Index

将相对预测范围转换为绝对预测范围(反之亦然)所需的截止点值。如果为 pd.Index,则最后一个/最新的值被视为截止点

返回:
fh_abspandas.Index

预测范围的绝对表示。

to_absolute_int(start, cutoff=None)[source]#

返回从 start 开始的零基整数索引的绝对值。

参数:
startpd.Period, pd.Timestamp, int

返回为零的起始值。

cutoffpd.Period, pd.Timestamp, int, 或 pd.Index, 可选 (默认为 None)

将相对预测范围转换为绝对预测范围(反之亦然)所需的截止点值。如果为 pd.Index,则最后一个/最新的值被视为截止点

返回:
fhForecastingHorizon

预测范围的绝对表示,作为零基整数索引。

to_in_sample(cutoff=None)[source]#

返回 fh 的样本内索引值。

参数:
cutoffpd.Period, pd.Timestamp, int, 可选 (默认为 None)

将相对预测范围转换为绝对预测范围(反之亦然)所需的截止点值。

返回:
fhForecastingHorizon

预测范围的样本内值。

to_out_of_sample(cutoff=None)[source]#

返回 fh 的样本外值。

参数:
cutoffpd.Period, pd.Timestamp, int, 可选 (默认为 None)

将相对预测范围转换为绝对预测范围(反之亦然)所需的截止点值。

返回:
fhForecastingHorizon

预测范围的样本外值。

is_all_in_sample(cutoff=None) bool[source]#

预测范围对于给定的截止点是否完全在样本内。

参数:
cutoffpd.Period, pd.Timestamp, int, 默认为 None

用于检查预测范围是否完全在样本内的截止点值。

返回:
ret布尔值

如果预测范围对于给定的截止点完全在样本内,则为 True。

is_all_out_of_sample(cutoff=None) bool[source]#

预测范围对于给定的截止点是否完全在样本外。

参数:
cutoffpd.Period, pd.Timestamp, int, 可选 (默认为 None)

用于检查预测范围是否完全在样本外的截止点值。

返回:
ret布尔值

如果预测范围对于给定的截止点完全在样本外,则为 True。

to_indexer(cutoff=None, from_cutoff=True)[source]#

返回零基索引器值,以便轻松对数组进行索引。

参数:
cutoffpd.Period, pd.Timestamp, int, 可选 (默认为 None)

将相对预测范围转换为绝对预测范围(反之亦然)所需的截止点值。

from_cutoff布尔值, 可选 (默认为 True)
  • 如果为 True,则相对于截止点进行零基计算。

  • 如果为 False,则相对于预测范围中的第一个值进行零基计算

返回:
fhpd.Index

索引器。

get_expected_pred_idx(y=None, cutoff=None, sort_by_time=False)[source]#

构建 y_pred 中预期的 DataFrame 索引,即 _predict 的返回值。

参数:
ypd.DataFrame, pd.Series, pd.Index, 或 None

计算 fh 的相对数据,假定为 sktime 基于 pandas 的 mtype 或其索引 如果为 None,假定没有 MultiIndex

cutoffpd.Period, pd.Timestamp, int, 或 pd.Index, 可选 (默认为 None)

用于计算结果索引的截止点值。如果未提供截止点,则通过 get_cutoffy 计算。

sort_by_time布尔值, 可选 (默认为 False)

对于 MultiIndex 返回,是否按时间索引(级别 -1)排序 - 如果为 True,则结果 Index 按时间索引(级别 -1)排序 - 如果为 False,则结果 Index 整体排序

返回:
fh_idxpd.Index, predict 返回的 y_pred 的预期索引

假定基于 pandas 的返回 mtype