sktime中EnbPIForecaster使用问题解析与解决方案
概述
在时间序列预测领域,sktime是一个功能强大的Python库,提供了多种预测算法和工具。其中EnbPIForecaster是一个基于EnbPI(Ensemble Batch Prediction Intervals)方法的预测器,能够生成预测区间。然而,官方文档中的示例代码存在一些问题,可能导致用户在使用时遇到困难。
问题分析
原文档示例代码存在两个主要问题:
-
模块导入路径错误:示例中使用的是
from sktime.forecasting.compose import EnbPIForecaster
,而实际上正确的导入路径应该是from sktime.forecasting.enbpi import EnbPIForecaster
。 -
预测范围(Forecasting Horizon)设置不当:示例中使用了
fh=range(12)
,这会导致尝试进行样本内预测,而TransformedTargetForecaster不支持这种操作。
解决方案
正确的实现方式应该如下:
from tsbootstrap import MovingBlockBootstrap
from sktime.forecasting.enbpi import EnbPIForecaster
from sktime.forecasting.naive import NaiveForecaster
from sktime.datasets import load_airline
from sktime.transformations.series.difference import Differencer
from sktime.transformations.series.detrend import Deseasonalizer
from sktime.forecasting.base import ForecastingHorizon
# 加载数据
y = load_airline()
# 数据预处理
diff = Differencer(lags=[1])
deseasonalizer = Deseasonalizer(sp=12)
y_transformed = diff.fit_transform(deseasonalizer.fit_transform(y))
# 创建预测器
forecaster = EnbPIForecaster(
forecaster=NaiveForecaster(sp=12),
bootstrap_transformer=MovingBlockBootstrap(n_bootstraps=10)
)
# 设置预测范围(必须是未来时间点)
fh = ForecastingHorizon(range(1, 13))
# 训练和预测
forecaster.fit(y_transformed, fh=fh)
res = forecaster.predict()
res_int = forecaster.predict_interval(coverage=[0.5])
关键点说明
-
数据预处理:在使用EnbPIForecaster之前,应该先对数据进行差分和去季节化处理,确保时间序列的平稳性。
-
预测范围设置:必须使用ForecastingHorizon来明确指定预测的未来时间点,避免尝试进行样本内预测。
-
预测区间:predict_interval方法可以生成指定置信水平的预测区间,coverage参数可以设置为一个列表,包含所需的置信水平。
技术背景
EnbPI方法是一种基于自助法的预测区间构造方法,它通过以下步骤工作:
- 使用自助法生成多个时间序列样本
- 在每个样本上训练基础预测器
- 基于多个预测结果的分布构造预测区间
这种方法特别适合处理时间序列数据中的不确定性,能够提供更可靠的预测区间估计。
总结
在使用sktime的EnbPIForecaster时,需要注意正确的导入路径和预测范围设置。通过合理的数据预处理和参数配置,可以充分利用这一工具进行时间序列预测和不确定性量化。对于时间序列分析任务,正确理解和使用预测区间对于决策支持至关重要。
cherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端TypeScript039RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统Vue0418arkanalyzer
方舟分析器:面向ArkTS语言的静态程序分析框架TypeScript041GitCode百大开源项目
GitCode百大计划旨在表彰GitCode平台上积极推动项目社区化,拥有广泛影响力的G-Star项目,入选项目不仅代表了GitCode开源生态的蓬勃发展,也反映了当下开源行业的发展趋势。03PowerWechat
PowerWechat是一款基于WeChat SDK for Golang,支持小程序、微信支付、企业微信、公众号等全微信生态Go01openGauss-server
openGauss kernel ~ openGauss is an open source relational database management systemC++0146
热门内容推荐
最新内容推荐
项目优选









