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 的样本外值。
将预测范围的基础值作为 pd.Index 返回。
to_relative
([cutoff])返回相对于截止点的预测范围值。
- 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
,如果其fh
是self
,则此方法使用cutoff=f.cutoff
返回的值与预测器的预测方法(例如f.predict
或f.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_cutoff
从y
计算。- sort_by_time布尔值, 可选 (默认为 False)
对于 MultiIndex 返回,是否按时间索引(级别 -1)排序 - 如果为 True,则结果 Index 按时间索引(级别 -1)排序 - 如果为 False,则结果 Index 整体排序
- 返回:
- fh_idxpd.Index, predict 返回的 y_pred 的预期索引
假定基于 pandas 的返回 mtype