序列化

介绍

Qlib 支持将 DataHandlerDataSetProcessorModel 等的状态转储到磁盘并重新加载它们。

可序列化类

Qlib 提供了一个基类 qlib.utils.serial.Serializable,其状态可以以 pickle 格式转储到磁盘或从磁盘加载。 当用户转储 Serializable 实例的状态时,实例中名称 _ 开头的属性将被保存到磁盘。 然而,用户可以使用 config 方法或覆盖 default_dump_all 属性来阻止此功能。

用户还可以覆盖pickle_backend属性以选择pickle后端。支持的值是“pickle”(默认和常见)和“dill”(可以转储更多内容,如函数,更多信息请参见这里)。

示例

Qlib 的可序列化类包括 DataHandler, DataSet, ProcessorModel 等,它们是 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的状态应该保存在磁盘上,例如用于数据归一化的一些均值方差等。

重新加载DatasetH后,用户需要重新初始化它。这意味着用户可以重置DatasetHQlibDataHandler的一些状态,例如instrumentsstart_timeend_timesegments等,并根据这些状态生成新数据(数据不是状态,不应保存在磁盘上)。

更详细的示例在此链接中。

API

请参考 Serializable API