序列化
介绍
Qlib``支持将``数据处理器、数据集、``处理器``和``模型``等的状态转储到磁盘并重新加载。
可序列化类
Qlib 提供了一个基类 qlib.utils.serial.Serializable,其状态可以以 pickle 格式转储到磁盘或从磁盘加载。当用户转储 Serializable 实例的状态时,实例中名称 不以 _ 开头的属性将被保存到磁盘。然而,用户可以使用 config 方法或重写 default_dump_all 属性来防止此功能。
用户还可以重写 pickle_backend 属性以选择一个 pickle 后端。支持的值为 "pickle"(默认和常用)和 "dill"(可以转储更多内容,如函数,更多信息见 here)。
示例
Qlib 的可序列化类包括 DataHandler、DataSet、Processor 和 Model 等,它们都是 qlib.utils.serial.Serializable 的子类。具体来说,qlib.data.dataset.DatasetH 是其中之一。用户可以按如下方式序列化 DatasetH。
##=============dump dataset=============
dataset.to_pickle(path="dataset.pkl") # dataset is an instance of qlib.data.dataset.DatasetH
##=============reload dataset=============
with open("dataset.pkl", "rb") as file_dataset:
dataset = pickle.load(file_dataset)
备注
仅 DatasetH 的状态应保存到磁盘,例如用于数据归一化的一些 mean 和 variance 等。
在重新加载 DatasetH 后,用户需要重新初始化它。这意味着用户可以重置 DatasetH 或 QlibDataHandler 的一些状态,例如 instruments、start_time、end_time 和 segments 等,并根据状态生成新数据(数据不是状态,不应保存到磁盘)。
更详细的示例请参见此 link。
API
请参考 Serializable API。