预测范围#
- class ForecastingHorizon(values=None, is_relative=None, freq=None)[源代码][源代码]#
预测范围。
- 参数:
- 值pd.Index, pd.TimedeltaIndex, np.array, list, pd.Timedelta, 或 int
预测范围的值
- is_relativebool, 可选 (默认=None)
- 如果为 True,则创建一个相对的 ForecastingHorizon:
数值是相对于训练系列的结束而言的。
- 如果为 False,则创建一个绝对预测时间范围:
值是绝对的。
- 如果为 None,则标志会自动确定:
相对的,如果值是支持的相对索引类型 绝对的,如果不是相对的且值是支持的绝对索引类型
- 频率str, pd.Index, pandas 偏移量, 或 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)
List as 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 索引的绝对预测时间范围
>>> 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 [源代码][源代码]#
将预测时间范围的底层值作为 np.array 返回。
- 参数:
- **kwargskwargs 的字典
传递给包装的 pandas 索引的
to_numpy()
方法的 kwargs。
- 返回:
- fhnp.ndarray
包含预测期基础值的 NumPy 数组。
- to_relative(cutoff=None)[源代码][源代码]#
返回相对于截止点的预测时间范围值。
- 参数:
- 截止pd.Period, pd.Timestamp, int, 或 pd.Index, 可选 (默认=None)
将相对预测时间范围转换为绝对时间范围(反之亦然)所需的截止值。如果为 pd.Index,则最后/最新的值被视为截止值。
- 返回:
- fh预测范围
预测时间范围的相对表示。
- to_absolute(cutoff)[源代码][源代码]#
返回预测时间范围值的绝对版本。
- 参数:
- 截止pd.Period, pd.Timestamp, int, 或 pd.Index
截止值是用于将相对预测时间范围转换为绝对时间范围(反之亦然)所必需的。如果是 pd.Index,则最后/最新的值被视为截止值。
- 返回:
- fh预测范围
预测时间范围的绝对表示。
- to_absolute_index(cutoff=None)[源代码][源代码]#
返回地平线的绝对值作为 pandas.Index。
对于一个预测器
f
,如果fh
是self
,那么使用cutoff=f.cutoff
调用此方法的返回值与预测器的预测方法(如f.predict
或f.predict_interval
)的返回值的预期索引相同。- 参数:
- 截止pd.Period, pd.Timestamp, int, 或 pd.Index
截止值是用于将相对预测时间范围转换为绝对时间范围(反之亦然)所必需的。如果是 pd.Index,则最后/最新的值被视为截止值。
- 返回:
- fh_abspandas.Index
预测时间范围的绝对表示。
- to_absolute_int(start, cutoff=None)[源代码][源代码]#
返回从
start
开始的零基整数索引的绝对值。- 参数:
- 开始pd.Period, pd.Timestamp, int
起始值返回为零。
- 截止pd.Period, pd.Timestamp, int, 或 pd.Index, 可选 (默认=None)
将相对预测时间范围转换为绝对时间范围(反之亦然)所需的截止值。如果为 pd.Index,则最后/最新的值被视为截止值。
- 返回:
- fh预测范围
预测时间范围的绝对表示形式,作为基于零的整数索引。
- to_in_sample(cutoff=None)[源代码][源代码]#
返回 fh 的样本内索引值。
- 参数:
- 截止pd.Period, pd.Timestamp, int, 可选 (默认=None)
将相对预测时间范围转换为绝对时间范围(反之亦然)所需的截止值。
- 返回:
- fh预测范围
预测范围内的样本值。
- to_out_of_sample(cutoff=None)[源代码][源代码]#
返回 fh 的样本外值。
- 参数:
- 截止pd.Period, pd.Timestamp, int, 可选 (默认=None)
截止值是必需的,用于将相对预测范围转换为绝对范围(反之亦然)。
- 返回:
- fh预测范围
预测范围的样本外值。
- is_all_in_sample(cutoff=None) bool [源代码][源代码]#
预测范围是否完全在给定截止点的样本内。
- 参数:
- 截止pd.Period, pd.Timestamp, int, 默认=None
用于检查预测范围是否完全在样本内的截断值。
- 返回:
- ret布尔
如果预测范围完全在给定截止点的样本内,则为真。
- is_all_out_of_sample(cutoff=None) bool [源代码][源代码]#
预测范围是否完全超出给定截止点的样本外。
- 参数:
- 截止pd.Period, pd.Timestamp, int, 可选 (默认=None)
用于检查预测范围是否完全超出样本的截止值。
- 返回:
- ret布尔
如果预测范围对于给定的截止点完全是样本外的,则为真。
- to_indexer(cutoff=None, from_cutoff=True)[源代码][源代码]#
返回基于零的索引值,以便轻松索引数组。
- 参数:
- 截止pd.Period, pd.Timestamp, int, 可选 (默认=None)
将相对预测时间转换为绝对时间或反之所需的截止值。
- from_cutoffbool, 可选 (默认=True)
如果为真,则相对于截止值为零基。
如果为 False,则相对于预测中的第一个值进行零基计算
horizon.
- 返回:
- fhpd.Index
索引器。
- get_expected_pred_idx(y=None, cutoff=None, sort_by_time=False)[源代码][源代码]#
在 y_pred 中构造预期的 DataFrame 索引,返回 _predict。
- 参数:
- ypd.DataFrame, pd.Series, pd.Index, 或 None
要计算 fh 相对的数据,假设在 sktime 基于 pandas 的 mtype 中,或者如果没有,则假设没有 MultiIndex
- 截止pd.Period, pd.Timestamp, int, 或 pd.Index, 可选 (默认=None)
计算结果索引时使用的截止值。如果未提供截止值,则通过
get_cutoff
从y
计算得出。- 按时间排序bool, 可选 (默认=False)
对于 MultiIndex 返回,是否按时间索引(级别 -1)排序 - 如果为 True,结果索引按时间索引(级别 -1)排序 - 如果为 False,结果索引整体排序
- 返回:
- fh_idxpd.Index,预期的 y_pred 返回的索引由 predict 方法返回
假设基于 pandas 的返回 mtype