序列化

简介

Qlib 支持将 DataHandlerDataSetProcessorModel 等对象的状态转储到磁盘,并可重新加载。

可序列化类

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

用户还可以重写 pickle_backend 属性以选择 pickle 后端。支持的值包括 “pickle”(默认且通用)和 “dill”(可转储更多内容,例如函数,更多信息见此处)。

示例

Qlib 的可序列化类包括 DataHandlerDataSetProcessorModel 等,它们都是 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