
sktime 时间序列回归 API 全景指南从 BaseRegressor 到深度回归器的完整生态【免费下载链接】sktimeA unified framework for machine learning with time series项目地址: https://gitcode.com/GitHub_Trending/sk/sktime导读本文以 sktime 官方 API 参考文档 regression.rst 为主线系统梳理sktime.regression模块中全部回归器regressor家族从统一的BaseRegressor基类接口、组合管道Pipeline、模型选择与调参、经典集成与距离/区间/核方法到覆盖 TensorFlow 与 PyTorch 双后端的深度回归器。读完本文你将掌握如何用sktime.registry.all_estimators检索回归器、如何用*/|语法组装管道与多路复用器、如何用TSRGridSearchCV做网格调参以及每个回归器的核心参数与适用场景并了解其底层源码实现。一、sktime.regression模块总览什么是时间序列回归sktime.regression模块包含时间序列回归time series regression所需的算法与组合工具。与经典回归tabular regression不同时间序列回归的输入X是面板数据Panel——即一组时间序列的集合每个样本是一条时间序列可多变量、可不等长输出y是标量回归值可多输出。典型场景包括根据一段传感器信号预测设备剩余寿命RUL、根据心电图波形预测生理指标、根据光谱曲线预测物质浓度等。模块的目录结构清晰地反映了分类体系见 sktime/regression子模块对应回归器类型compose组合Pipeline、Multiplex、集成森林model_selection调参TSRGridSearchCVdeep_learning深度回归器TF / Torch 双实现distance_based基于距离的 KNN 回归器dummy基线 Dummy 回归器interval_based基于区间的随机森林回归器kernel_based基于核/卷积变换的回归器base抽象基类BaseRegressor、BaseDeepRegressor所有回归器都遵循统一的BaseRegressor接口这保证了同一个回归器既可以独立使用也可以作为管道中的一环还可以被TSRGridSearchCV统一调参。二、检索回归器all_estimators与标签tags体系原文档明确指出sktime 中所有回归器都可以用sktime.registry.all_estimators工具列出通过estimator_typesregressor过滤并可进一步按标签tags筛选from sktime.registry import all_estimators # 列出所有回归器 all_regressors all_estimators(estimator_typesregressor) # 只列出支持多元时间序列的回归器 multivariate_regressors all_estimators( estimator_typesregressor, filter_tags{capability:multivariate: True}, )合法的标签集合可以通过sktime.registry.all_tags查看from sktime.registry import all_tags all_tags()从源码看回归器的能力标签统一定义在基类 sktime/regression/base.py 的_tags字典中核心标签及其默认值包括标签默认值含义object_typeregressor对象类型标识X_inner_mtypenumpy3D_fit/_predict内部接受的 X 格式y_inner_mtypenumpy1D内部 y 格式capability:multioutputFalse是否支持多输出capability:multivariateFalse是否原生支持多元序列capability:unequal_lengthFalse是否支持不等长序列capability:missing_valuesFalse是否支持缺失值capability:multithreadingFalse是否支持多线程子类通过覆盖这些标签来声明自身能力框架据此在fit时自动检查输入数据与能力的匹配性见 base.py 中的_check_capabilities。此外官方还提供带标签检索的网页版 Estimator Search Page在 Estimator type 下拉框中选择 regressor 即可可视化检索。注意原文档中拼写为 regresser 的菜单项为官方文档原有文字实际 Estimator 类型应选择 regressor。三、统一基类接口BaseRegressor与BaseDeepRegressor3.1BaseRegressor一切回归器的契约BaseRegressor是所有时间序列回归器的抽象基类位于 sktime/regression/base.py定义了每个回归器必须实现的方法签名方法类型说明fit(X, y)公开方法拟合内部调用抽象方法_fitpredict(X)公开方法预测内部调用抽象方法_predictscore(X, y, multioutputuniform_average)公开方法计算 R² 分数_fit(X, y)抽象方法子类必须实现_predict(X)抽象方法子类必须实现get_params()/get_fitted_params()继承方法超参数/拟合参数检视fit的底层流程base.py体现了框架的公共工程逻辑重置状态 → 启动计时器 → 检查并转换y支持向量化多输出→ 内部格式转换 → 输入检查与能力检查 → 按标签转换 X → 调用子类_fit→ 记录fit_time_并置is_fitted。约定了以_结尾的属性为拟合后产生的状态属性。基类还实现了两个极具 sktime 特色的魔法运算符__rmul__*将 transformer 与回归器串成管道例如my_trafo1 * my_trafo2 * my_reg等价于RegressorPipeline(regressormy_reg, transformers[my_trafo1, my_trafo2])base.py。__or__|构造MultiplexRegressor多路复用器base.py。3.2BaseDeepRegressor深度回归器的基座位于 sktime/regression/deep_learning/base深度回归器进一步分叉为 TensorFlow 基类_base_tf.py与 PyTorch 基类_base_torch.py分别封装了keras与torch的模型构建、编译、训练循环与序列化逻辑。这也是下文中几乎所有深度回归器都同时存在...RegressorTF 版与...RegressorTorchPyTorch 版两个类的原因。四、组合与调参Composition、Model Selection 与 Ensembles4.1RegressorPipelineTransformer 回归器的管道RegressorPipeline将一组 transformer 和一个回归器串联fit时依次对 X 执行trafo1.fit_transform→trafo2.fit_transform→ …最后用变换结果拟合回归器predict时依次transform后交给回归器预测compose/_pipeline.py。from sktime.transformations.pca import PCATransformer from sktime.datasets import load_unit_test from sktime.regression.compose import RegressorPipeline from sktime.regression.distance_based import KNeighborsTimeSeriesRegressor X_train, y_train load_unit_test(splittrain) X_test, y_test load_unit_test(splittest) pipeline RegressorPipeline( KNeighborsTimeSeriesRegressor(n_neighbors2), [PCATransformer()] ) pipeline.fit(X_train, y_train) y_pred pipeline.predict(X_test)也可以用乘法魔法符更简洁地构造源码 doctest 中的等价写法pipeline PCATransformer() * KNeighborsTimeSeriesRegressor(n_neighbors2)get_params/set_params使用 sklearn 兼容的嵌套接口若传入未命名列表则用类名自动生成名称名称不唯一时追加_str(i)后缀。4.2SklearnRegressorPipeline拥抱 sklearn 生态同文件中的SklearnRegressorPipeline允许在管道中混入 sklearn transformer实现 sklearn 与 sktime 组件的透明组合——sklearn 的 transform 会被自动适配从而把StandardScaler、PCA等经典预处理无缝接入时间序列回归流程。4.3MultiplexRegressor跨模型类选择的开关MultiplexRegressor用于在多个回归器之间做模型选择compose/_multiplexer.py接受一个可命名回归器列表与超参数selected_regressor指定使用哪个selected_regressorNone时行为等同于选择列表中的第一个回归器与TSRGridSearchCV联用时通过把selected_regressor作为网格中的一个超参数进行搜索即可实现跨模型族的 AutoML 式自动选择。from sktime.regression.compose import MultiplexRegressor from sktime.regression.dummy import DummyRegressor from sktime.regression.interval_based import TimeSeriesForestRegressor multi MultiplexRegressor( regressors[ (dummy, DummyRegressor()), (tsf, TimeSeriesForestRegressor()), ], selected_regressordummy, )它同样可以用|运算符构造reg1 | reg2。其能力标签声明支持多输出、多元、不等长与缺失值multiplexer.py是所有组合器中最宽口径的一个。4.4TSRGridSearchCV原生网格搜索与调参TSRGridSearchCVmodel_selection/_tune.py是专为时间序列回归设计的网格搜索器内部使用 sktime 原生回测机制sktime.regression.model_evaluation.evaluate评估每个参数组合。核心参数参数默认值说明estimator必填待调参的 sktime 回归器param_grid必填参数名到候选值列表的字典或字典列表scoringNone即r2_score评分指标可为字符串、callable、sklearn scorer 或列表/字典cvNone默认 5 折交叉验证策略所有候选在相同折上评估refitTrue是否用最佳参数在全集上重拟合tune_by_variableFalse是否对多元数据的每个变量分别调参backendNone并行后端loky、multiprocessing、threading、dask、rayerror_scorenp.nan拟合出错时的评分值官方示例源码 doctestfrom sktime.datasets import load_unit_test from sktime.regression.dummy import DummyRegressor from sktime.regression.model_selection import TSRGridSearchCV X, y load_unit_test(splittrain) tuned TSRGridSearchCV( DummyRegressor(), param_grid{strategy: [mean, median]}, cv2, ) tuned tuned.fit(X, y.astype(float)) y_pred tuned.predict(X) best_params tuned.best_params_搜索完成后可获得cv_results_逐折评分、均值/标准差/排名、best_estimator_、best_score_、best_params_、best_index_、n_splits_、refit_time_等属性。scoring支持多指标列表或字典第一个指标用于排序候选greater_is_betterauto会根据指标的符号约定自动判断优化方向。并行时官方推荐dask或lokythreading因 GIL 通常收益有限。4.5ComposableTimeSeriesForestRegressor可插拔管道的森林集成ComposableTimeSeriesForestRegressorcompose/_ensemble.py是随机森林在时间序列数据上的适配版本在数据的子样本上拟合多棵决策树回归器通过平均提升精度、抑制过拟合。其亮点是支持传入自定义的estimator管道series-to-tabular 变换 决策树核心参数与 sklearn 森林一致参数默认值说明n_estimators100森林中树的棵数criterionsquared_error分裂准则另有friedman_mse、absolute_error、poissonmax_depthNone树的最大深度min_samples_split2内部节点分裂所需最小样本数int 或 float 分数min_samples_leaf1叶节点最小样本数bootstrapTrue是否放回抽样五、经典回归器Dummy、距离、区间与核方法5.1DummyRegressor快速基线DummyRegressordummy/_dummy.py忽略输入特征仅基于训练集y生成预测功能上与sklearn.dummy.DummyRegressor完全一致用于建立简单基线对比。strategy可选mean恒预测训练集均值默认median恒预测训练集中位数quantile恒预测指定分位数配合quantile参数0.5即中位数constant恒预测用户给定常数配合constant参数。5.2KNeighborsTimeSeriesRegressor支持任意时序距离的 KNNKNeighborsTimeSeriesRegressordistance_based/_time_series_neighbors.py是 sklearnKNeighborsRegressor的时间序列适配版核心能力在于distance参数的三种形态字符串硬编码调用sktime.dists_kernels._numba_distances中的高效距离可选euclidean、squared、dtw、ddtw、wdtw、wddtw、lcss、edr、erp、msm、twe默认dtw。这些默认距离性能好但不支持不等长/多元序列。sktime 成对 transformer来自sktime.dists_kernels可通过registry.all_estimators按pairwise-transformer类型检索支持不等长/多元的距离可通过capability:unequal_length、capability:multivariate标签发现。callable签名须为(X: Panel, X2: Panel) - np.ndarray输出 m×n 的距离矩阵。from sktime.regression.distance_based import KNeighborsTimeSeriesRegressor knn KNeighborsTimeSeriesRegressor( n_neighbors5, distancedtw, # 或传 pairwise transformer / callable distance_params{epsilon: 0.1}, # 当 distance 为字符串时传参 weightsdistance, # uniform / distance / callable algorithmbrute, # auto / ball_tree / brute / brute_incr )其中algorithmbrute预计算距离矩阵后直接套用 sklearn KNN运行快但内存开销大brute_incr增量计算距离省内存适合大数据集ball_tree用 ball tree 加速近邻搜索中大型数据集的运行/内存折中。另有leaf_size默认 30、n_jobs、pass_train_distances等参数。5.3TimeSeriesForestRegressor随机区间森林TSFTimeSeriesForestRegressorinterval_based/_tsf.py是经典 TSF 回归器对每条长度为 m 的序列每棵树采样 sqrt(m) 个随机区间提取每个区间的均值、标准差、斜率拼接成新特征再训练决策树最后对森林求平均。参数n_estimators默认200min_interval默认3区间最小宽度n_jobs默认1-1用满所有核random_state随机种子。5.4RocketRegressor卷积变换 岭回归RocketRegressorkernel_based/_rocket_regressor.py是ROCKET 变换 StandardScaler(with_meanFalse)RidgeCV的组合速写等价管道为rocket * StandardScaler(with_meanFalse) * RidgeCV(alphas)其中alphas np.logspace(-3, 3, 10)。核心参数参数默认值说明num_kernels10000ROCKET 卷积核数量rocket_transformrocketrocket/minirocket/multirocketmax_dilations_per_kernel32MiniRocket/MultiRocket 每核最大膨胀数n_features_per_kernel4MultiRocket 每核特征数use_multivariateautoauto/yes/no控制是否用多元 Rocket 变换n_jobs1并行任务数random_stateNone随机种子注意num_kernels_属性当rocket_transform为minirocket或multirocket时真实核数会被向下取整到 84 的倍数小于 84 时即为 84。若需要自定义其他回归器组合可用make_pipeline或*运算符自由搭配。5.5TimeSeriesSVRTslearn基于 tslearn 的时序 SVRTimeSeriesSVRTslearnkernel_based/_svr_tslearn.py封装了tslearn的时序支持向量回归器为需要核化时序建模的场景提供 SVR 实现。其可用性依赖tslearn软依赖是否安装属可选安装模块。六、深度回归器家族TF 与 Torch 双后端sktime.regression.deep_learning提供了 11 种网络架构的回归实现每种均以RegressorTensorFlow 后端与RegressorTorchPyTorch 后端成对出现导出清单见 deep_learning/init.py架构TF 版Torch 版特点CNNCNNRegressorCNNRegressorTorch卷积神经网络CNTCCNTCRegressorCNTCRegressorTorchC-T 卷积时序模型ConvTran—ConvTranRegressorTorch卷积 TransformerFCNFCNRegressorFCNRegressorTorch全卷积网络InceptionTimeInceptionTimeRegressorInceptionTimeRegressorTorchInception 残差模块LSTMFCNLSTMFCNRegressorLSTMFCNRegressorTorchLSTM FCN 融合MACNNMACNNRegressorMACNNRegressorTorch多尺度注意力 CNNMCDCNNMCDCNNRegressorMCDCNNRegressorTorch多列深度 CNNMLPMLPRegressorMLPRegressorTorch多层感知机ResNetResNetRegressorResNetRegressorTorch残差网络RNNSimpleRNNRegressorSimpleRNNRegressorTorch简单循环网络TapNetTapNetRegressorTapNetRegressorTorch注意力原型网络例如 CNN 回归器的 TF 实现位于 deep_learning/cnn/_cnn_tf.py、Torch 实现位于 deep_learning/cnn/_cnn_torch.py其余架构的文件布局一致如resnet/_resnet_tf.py、fcn/_fcn_torch.py等。这些深度回归器通常提供n_epochs、batch_size、kernel_size、n_layers、optimizer、loss以及随机种子等训练参数并统一继承BaseDeepRegressor的 fit/predict 生命周期。使用示例以 FCN 为例from sktime.regression.deep_learning.fcn import FCNRegressor reg FCNRegressor(n_epochs50, batch_size16, random_state42) reg.fit(X_train, y_train) y_pred reg.predict(X_test)注意深度回归器依赖tensorflow或tensorflow与torch等软依赖使用前请确保环境已安装对应后端。具体训练参数如默认 epoch 数、卷积核大小以各架构源码 docstring 为准。七、接口一致性从分类到回归的范式迁移如果读者熟悉 sktime 的sktime.classification模块会发现回归模块是其镜像同样的*/|魔法运算符、同样的 Pipeline/Multiplex/GridSearch 组合器、同样的 TF/Torch 双实现、同样的 tag 能力声明体系。这种一致性来自基类BaseRegressor(BasePanelMixin)继承的公共面板逻辑sktime/base。因此分类任务中的经验数据格式numpy3D/pd-multiindex/nested_univ、load_unit_test等内置数据集、TSRGridSearchCV的cv_results_解读可以几乎无缝迁移到回归任务只需将类别标签替换为连续数值。回归模块的测试基础设施同样完整见 sktime/regression/tests 下的test_all_regressors.py全量回归器契约测试、test_base.py基类接口测试、test_categorical_in_composite.py组合器对分类特征的兼容性测试以及 sktime/regression/model_selection/tests/test_tune.py、sktime/regression/distance_based/tests/test_time_series_neighbors.py 等模块级测试可作为理解各回归器行为的参考样例。八、总结与选型建议基于 docs/source/api_reference/regression.rst 的目录体系与各实现源码可以给出如下选型路径快速基线DummyRegressor简单稳健KNeighborsTimeSeriesRegressor配 DTW 等时序距离、TimeSeriesForestRegressor随机区间特征、RocketRegressor卷积变换 岭回归训练极快需调参与模型选择用TSRGridSearchCV包裹任意回归器或用MultiplexRegressor 网格搜索实现跨模型族 AutoML需组合预处理用RegressorPipeline/SklearnRegressorPipeline或*运算符串联 transformer大数据量/高复杂度模式从deep_learning的 11 种架构中按任务特性选择优先使用与任务信号形态匹配的架构序列依赖选 RNN/LSTMFCN局部模式选 CNN/FCN/ResNet长程依赖可尝试 ConvTran/TapNet并在 TF 与 Torch 后端间按生态选择。无论选择哪条路径统一的BaseRegressor接口、tag 能力声明与all_estimators检索机制都保证了回归器之间、回归器与框架工具之间的无缝互操作。【免费下载链接】sktimeA unified framework for machine learning with time series项目地址: https://gitcode.com/GitHub_Trending/sk/sktime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考