YfromX#
- YfromX(estimator, pooling='local')[source]#
一种简单归约方法,用于从并发的外生变量预测内生变量。
根据时间索引将所有已见的
X
和y
制成表格,并应用表格形式的监督回归。在
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
结合使用。要构建自定义直接归约器,可以将其与
YtoX
、Lag
或ReducerTransform
结合使用。- 参数:
- 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