资讯详情

Kats Nowcasting 模块深度指南:基于机器学习的短时预测、特征工程与模型序列化

📅 2026/10/8 14:06:55 | 华诺云谱 👁 阅读
Kats Nowcasting 模块深度指南:基于机器学习的短时预测、特征工程与模型序列化
数据分析机器学习数据科学【免费下载链接】KatsKats, a kit to analyze time series data, a lightweight, easy-to-use, generalizable, and extendable framework to perform time series analysis, from understanding the key statistics and characteristics, detecting change points and anomalies, to forecasting future trends.项目地址https://gitcode.com/gh_mirrors/ka/Kats点击查看免费下载导读本文面向需要在时间序列上做短时预测short-term forecasting的开发者围绕 Kats 项目中kats.models.nowcasting包展开系统讲解其三大组成模块nowcasting核心模型与参数、feature_extraction技术指标特征工程与model_io模型序列化。读完本文你将掌握如何用NowcastingModel配合NowcastingParams完成特征提取、标签构造、训练与预测的完整链路理解 ROC、LAG、MACD 等滚动特征的底层计算逻辑并能通过序列化接口保存与加载 sklearn 模型。kats.models.nowcasting是 Kats 时间序列分析框架中负责现在预报nowcasting的子包即以机器学习方式预测未来若干步的取值。本文档结构继承自 Sphinx API 文档 kats.models.nowcasting.rst并深入到对应源码与测试进行验证。一、模块总览nowcasting 子包的三个组成部分Kats 中 nowcasting 相关代码位于 kats/models/nowcasting/包入口init.py 声明了三个核心子模块子模块源码文件职责nowcastingnowcasting.py定义NowcastingParams参数类与NowcastingModel模型类覆盖特征/标签提取、训练、预测、模型存取feature_extractionfeature_extraction.py提供 ROC、MOM、MA、LAG、MACD、BBANDS、TRIX、EMA、TSI、RSI 等滚动特征生成函数model_iomodel_io.py提供基于 pickle 的模型序列化 / 反序列化工具此外同一目录下还有 dynamic_nowcasting.py 与 nowcastingplus.py 两个进阶变体分别引入多项式特征与随机森林/线性回归组合、缩放器等但 Sphinx 文档索引只公开了上述三个模块本文以公开模块为主、进阶变体为辅进行对照。二、核心模型NowcastingParams 与 NowcastingModel2.1 参数类 NowcastingParamsNowcastingParams继承自 Kats 的Params基类定义于 kats/consts.py目前只暴露一个核心参数参数类型默认值说明stepint1向前预测的步数steps ahead即未来多少个时间单位源码见 nowcasting.py。注意其validate_params()方法尚未实现会直接抛出NotImplementedError因此使用时应自行保证step为正整数且不超过历史数据长度。2.2 模型类 NowcastingModelNowcastingModel继承自 Kats 的Model基类kats/models/model.py构造函数签名NowcastingModel(data, params, modelNone, feature_names[])dataTimeSeriesData对象仅支持单变量时间序列否则抛出ValueError源码 nowcasting.py。model可选的 sklearn 模型实例默认在fit()中构造。feature_names特征列名列表feature_extraction()会自动填充。官方 docstring 给出的典型调用流程nowcasting.pynr NowcastingModel(datadata, paramsNowcastingParams(step10)) nr.feature_extraction() nr.label_extraction() nr.fit() output nr.predict()2.3 特征提取 feature_extraction()feature_extraction()完成特征列的构造nowcasting.py具体逻辑为对窗口长度n ∈ {10, 15, 20, 25, 30}依次调用ROC(df, n)生成ROC_10~ROC_30对同样的 5 个窗口调用LAG(df, n)生成LAG_10~LAG_30过滤掉任何包含NaN、inf、-inf的行保证下游 sklearn 模型输入干净。因此默认特征集共10 个特征列。docstring 中给出示例输出nowcasting.pyindextimeyROC_10ROC_15302020-02-05 00:00:007234.93-0.278597-0.266019312020-02-06 00:00:007272.51-0.275543-0.2717992.4 标签提取 label_extraction()label_extraction()通过负滞后生成未来step步的值作为监督标签nowcasting.pyself.df[label] LAG(self.data.to_dataframe(), -self.step)[LAG_- str(self.step)]即label列等于原始序列前移step步的值将预测未来问题转换为标准的监督回归问题。2.5 训练 fit()fit()从当前特征数据中再次过滤非有限值取出X_train self.df[self.feature_names]与y_train self.df[label]并默认采用 sklearn 的GradientBoostingRegressor梯度提升回归树进行训练nowcasting.py。2.6 预测 predict()predict()的行为值得注意nowcasting.py支持传入外部model覆盖内部模型或传入外部df覆盖内部数据集外部 df 必须包含y列未传入外部数据时取内部self.df[-self.step :][self.feature_names]最后step行作为预测输入即以最近 step 步的特征预测未来一步的值返回值为一个 float或数组这是它区别于常规多步递归预测的关键Nowcasting 以step 粒度保持预测精度只预测未来一步。2.7 模型存取 save_model / load_modeldef save_model(self) - bytes: # 返回序列化字节流 def load_model(self, model_as_bytes: bytes) - None: # 从字节流恢复模型两个方法分别委托给model_io模块的serialize_for_zippy与deserialize_from_zippynowcasting.py便于把训练好的 sklearn 模型存入数据库或文件。另外NowcastingModel.plot()尚未实现直接抛出NotImplementedError__str__()返回模型名Nowcastingnowcasting.py。三、特征工程库feature_extraction 模块详解feature_extraction.py 是一组把时间序列转化为 ML 特征的工具函数特征是滚动rolling性质的即输出仍是与输入等长的时间序列。全部函数都遵循同一约定默认针对名为y的列计算若传入其他column则输出列名变为column_指标_n。函数生成列名示例含义与计算要点ROC(df, n, columny)ROC_10收益率rate of change(y[t] - y[t-n1]) / y[t-n1]即diff(n-1) / shift(n-1)MOM(df, n, columny)MOM_10动量当前值与 n 步前之差即diff(n)MA(df, n, columny)MA_10过去 n 步的移动平均rolling(n).mean()n0时返回全 NaNLAG(df, n, columny)LAG_10滞后值shift(n)支持负 n即前移用于构造未来标签MACD(df, n_fast12, n_slow21, columny)MACD_12_21、MACDsign_12_21、MACDdiff_12_21指数移动平均差及其信号线span9、差值柱共新增 3 列BBANDS(df, n, columny)BollingerBand1_n、BollingerBand2_n布林带基于滚动均值与标准差的两个归一化指标TRIX(df, n, columny)TRIX_n三重指数平均triple exponential average振荡指标EMA(df, n, columny)EMA_n指数移动平均ewm(spann, min_periodsn-1).mean()TSI(df, r, s, columny)TSI_r_s真实强度指数true strength index双窗口 EMA 比值RSI(df, n, columny)RSI_n相对强弱指标基于涨跌幅 EMA 计算取值范围 [0, 100]使用示例模块 docstringfeature_extraction.py df ROC(df, 5) # 在原 df 基础上新增一列 ROC_5所有函数都以df.join(新列)的方式原地扩展 DataFrame因此可以链式调用组合出任意特征集。测试文件 kats/tests/models/test_nowcasting.py 对上述函数进行了系统验证覆盖缺失值、常数序列、递增/递减序列、峰值/谷值序列等场景并校验 LAG 的负滞后、超界滞后全 NaN、MA 的负窗口报错ValueError以及 MACD/BBANDS/EMA/TRIX/TSI/RSI 与期望数值的误差阈值error_threshold 0.0001等边界行为可作为自定义特征组合时的参考基准。四、模型持久化model_io 模块model_io.py 提供两个公开函数与一个内部序列化器SimplePickleSerializer内部类serialize(obj)用pickle.dumps压缩任意对象通常为 sklearn 模型deserialize(serialized_data)用pickle.loads还原对None输入返回空字节串/None。serialize_for_zippy(input)对外保存接口返回 bytes。deserialize_from_zippy(input, use_case_idNone)对外加载接口返回还原后的模型对象。函数名中的 zippy 源于其在内部存储场景Zippydb中的用途但该模块本身与外部系统解耦可独立用于任意场景训练完成后save_model()得到字节流即可入库线上预测时load_model(bytes)恢复模型后再predict()。五、进阶变体dynamic_nowcasting 与 nowcastingplus同一目录下还提供了两个进阶实现作为对基础模型的补充说明dynamic_nowcasting.py在基础特征ROC/MOM/MA/LAG之外引入多项式特征poly(df, n)生成poly_n列并加入PowerTransformer、scaler/label_scaler缩放器回归器改用RandomForestRegressor与LinearRegression组合nowcastingplus.py同样引入多项式特征与LinearRegression形成NowcastingPlusModel。两者的使用流程与基础模型完全一致feature_extraction() - label_extraction() - fit() - predict()可在对精度要求更高、数据含量纲差异时选用。六、完整可运行示例结合 kats/data/air_passengers.csv 等内置数据完整流程如下import pandas as pd from kats.consts import TimeSeriesData from kats.models.nowcasting import NowcastingModel, NowcastingParams df pd.read_csv(kats/data/air_passengers.csv) # 确保列名为 time / y或自行重命名 data TimeSeriesData(df) nr NowcastingModel(datadata, paramsNowcastingParams(step10)) nr.feature_extraction() # 生成 ROC_10..30 与 LAG_10..30 共 10 个特征 nr.label_extraction() # 构造未来 10 步的标签列 label nr.fit() # 训练 GradientBoostingRegressor output nr.predict() # 基于最近 10 行特征预测未来 1 个值 print(output) # 保存与恢复模型 blob nr.save_model() # bytes nr2 NowcastingModel(datadata, paramsNowcastingParams(step10)) nr2.load_model(blob) # 恢复 sklearn 模型七、注意事项与适用边界单变量限制NowcastingModel构造时强制校验data.value必须为pd.Series多变量序列需先拆分或使用其他模型step语义step同时用于特征窗口尾部切片与标签前移量较大step会显著减少有效训练样本训练数据长度应远大于step数据质量特征构造会产生NaN/±inffeature_extraction()与fit()均会过滤但过短或含大量缺失的序列会导致有效样本过少预测范围predict()只输出未来一步一个值若需多步预测需滚动调用或改用其他 Kats 模型文档状态NowcastingParams.validate_params()与NowcastingModel.plot()在源码中仍未实现使用相关能力时需自行校验参数或外部绘图。八、总结Kats 的kats.models.nowcasting包为基于 ML 的短时预测提供了完整闭环feature_extraction负责把原始序列转成 ROC/LAG/MACD 等滚动特征nowcasting负责特征-标签监督化、梯度提升训练与单步预测model_io负责模型的 pickle 持久化。三者配合 kats/tests/models/test_nowcasting.py 中的丰富用例既能支撑快速原型验证也适合作为自定义特征工程与模型变体如NowcastingPlusModel、DynamicNowcastingModel的起点。赞分享数据分析机器学习数据科学【免费下载链接】KatsKats, a kit to analyze time series data, a lightweight, easy-to-use, generalizable, and extendable framework to perform time series analysis, from understanding the key statistics and characteristics, detecting change points and anomalies, to forecasting future trends.项目地址https://gitcode.com/gh_mirrors/ka/Kats点击查看免费下载相关推荐9大网盘直链下载助手终极指南5分钟告别限速烦恼9大网盘直链下载助手终极指南5分钟告别限速烦恼 还在为网盘下载速度慢如蜗牛而烦恼吗你是否经常需要从多个网盘平台下载文件却因为限速而浪费大量时间网盘直链下数据分析机器学习数据科学如何用Kats时间序列预测模型特征重要性评估与SHAP值分析指南如何用Kats时间序列预测模型特征重要性评估与SHAP值分析指南 Kats是一个轻量级、易用且可扩展的时间序列分析框架能帮助用户从理解关键统计特征、检测变化数据分析机器学习数据科学OpenToonz 完整指南3步从零搭建快速上手的开源2D动画软件OpenToonz 完整指南3步从零搭建快速上手的开源2D动画软件 OpenToonz 是一款完全开源的 2D 动画创作软件源自宫崎骏电影背后使用的 To桌面应用图形学上一篇抖音下载器技术方案双引擎策略架构与高效内容获取系统下一篇抖音内容获取革命智能下载引擎如何打破平台壁垒创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑