预测范围#

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 的样本外值。

to_pandas()

将预测时间范围的底层值作为 pd.Index 返回。

to_relative([cutoff])

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

property is_relative: bool[源代码]#

预测范围是否相对于训练序列的结束。

返回:
is_relative布尔
property freq: str[源代码]#

频率属性。

返回:
频率pandas 频率字符串
to_pandas() Index[源代码][源代码]#

将预测时间范围的底层值作为 pd.Index 返回。

返回:
fhpd.Index

包含预测期基础值的 pandas 索引。

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 ,如果 fhself ,那么使用 cutoff=f.cutoff 调用此方法的返回值与预测器的预测方法(如 f.predictf.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_cutoffy 计算得出。

按时间排序bool, 可选 (默认=False)

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

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

假设基于 pandas 的返回 mtype