Panda ML 模块深度分析
src/panda_ml 定义了量化工作流中机器学习任务的基础抽象。它提供了一套标准化的接口(Node),用于构建数据预处理、模型训练和预测的流水线。
1. 核心设计理念
该模块借鉴了 scikit-learn 的 fit/transform 设计模式,并将计算单元抽象为工作流节点(BaseNode)。
- DataNode: 专注于数据清洗和特征工程,支持
fit(统计分布)和transform(数据转换)。 - ModelNode: 专注于模型生命周期,支持
fit(离线训练)、predict(在线推断)和update(增量学习)。
2. 核心类与文件详解
2.1 节点抽象基类
-
文件:
base_node.py- 类:
BaseNode(ABC) - 职责: 定义所有 ML 节点的顶层契约。
- 接口:
execute(context)- 所有子类必须实现的执行入口。
- 类:
-
文件:
data_node.py- 类:
DataNode(BaseNode) - 职责: 数据处理节点基类。
- 逻辑:
execute方法会根据上下文自动调用fit或transform。
- 类:
-
文件:
mode_node.py(应为model_node.py)- 类:
ModelNode(BaseNode) - 职责: 算法模型节点基类。
- 逻辑: 支持
train(调用fit)、predict(调用predict) 和update(调用update) 三种运行模式。
- 类:
2.2 装饰器系统
- 文件:
decorators.py- 功能: 提供
@node_spec装饰器。 - 作用: 为节点类注入元数据(名称、描述、输入输出 Schema),配合插件系统的注册机制使用。
- 功能: 提供
2.3 算法实现示例
- 文件:
importance_spearman_factor_combiner.py- 功能: 这是一个具体的算法实现,用于因子合成。
- 算法: 基于 Spearman 相关系数计算因子的动态权重。
- 流程:
fit: 计算 Feature Importance 与未来收益的 RankIC。compute_weights: 根据 IC 值分配权重。transform: 对多因子进行加权求和,输出复合因子。
3. 依赖关系
- 核心依赖:
abc(抽象基类),pandas(数据处理),numpy,scipy(统计计算)。 - 交互: 该模块主要被
panda_plugins中的 ML 节点继承和使用。