YfromX#

YfromX(estimator, pooling='local')[source]#

一种简单归约方法,用于从并发的外生变量预测内生变量。

根据时间索引将所有已见的 Xy 制成表格,并应用表格形式的监督回归。

fit 中,给定内生时间序列 y 和外生变量 X:将 estimator 拟合到按如下方式定义特征-标签对。

特征 = \(y(t)\), 标签:\(X(t)\) 涵盖所有已观测到上述值(即存在于索引中)的 \(t\)

predict 中,对于预测范围内的时刻 \(t\),使用 estimator 从标签:\(X(t)\) 预测 \(y(t)\)

如果回归器是 skpro 概率回归器,并且具有 predict_interval 等方法,则使用 estimator 从标签:\(X(t)\) 预测 \(y(t)\),并传递 predict_interval 等参数。

如果没有提供外生数据,将预测在 fit 中看到的 y 的平均值。

为了不使用全部历史数据进行拟合并定期更新,可以将其与 UpdateRefitsEvery 结合使用。

为了处理缺失数据,可以将其与 Imputer 结合使用。

要构建自定义直接归约器,可以将其与 YtoXLagReducerTransform 结合使用。

参数:
estimatorsklearn 回归器 或 skpro 概率回归器,

必须与归约算法中使用的 sklearn 或 skpro 接口表格回归算法兼容;如果使用 skpro 回归器,则结果预测器将具有概率预测能力

poolingstr 类型,以下之一:[“local”, “global”, “panel”],可选,默认为 “local”

数据被汇集以拟合监督回归模型的级别 “local” = 单元/实例级别,每个最低层级级别有一个归约模型 “global” = 顶层级别,对所有汇集数据(忽略级别)有一个整体归约模型 “panel” = 倒数第二层级别,每个面板级别 (-2) 有一个归约模型 如果层级小于等于 2,“global” 和 “panel” 的结果相同 如果只有 1 个层级(单个时间序列),则所有三个设置的结果一致

示例

>>> from sktime.datasets import load_longley
>>> from sktime.split import temporal_train_test_split
>>> from sktime.forecasting.compose import YfromX
>>> from sklearn.linear_model import LinearRegression
>>>
>>> y, X = load_longley()
>>> y_train, y_test, X_train, X_test = temporal_train_test_split(y, X)
>>> fh = y_test.index
>>>
>>> f = YfromX(LinearRegression())
>>> f.fit(y=y_train, X=X_train, fh=fh)
YfromX(...)
>>> y_pred = f.predict(X=X_test)

YfromX 也可以与 skpro 概率回归器一起使用,在这种情况下,结果预测器将能够进行概率预测: >>> from skpro.regression.residual import ResidualDouble # doctest: +SKIP >>> reg_proba = ResidualDouble(LinearRegression()) # doctest: +SKIP >>> f = YfromX(reg_proba) # doctest: +SKIP >>> f.fit(y=y_train, X=X_train, fh=fh) # doctest: +SKIP YfromX(…) >>> y_pred = f.predict_interval(X=X_test) # doctest: +SKIP