序列化
介绍
Qlib
支持将 DataHandler
、DataSet
、Processor
和 Model
等的状态转储到磁盘并重新加载。
可序列化类
Qlib
提供了一个基类 qlib.utils.serial.Serializable
,其状态可以以 pickle 格式转储到磁盘或从磁盘加载。
当用户转储一个 Serializable
实例的状态时,实例中**不以** _ 开头的属性将保存在磁盘上。
然而,用户可以使用 config
方法或覆盖 default_dump_all
属性来阻止此功能。
用户还可以覆盖 pickle_backend
属性来选择 pickle 后端。支持的值有 “pickle”(默认和常见)和 “dill”(可转储更多信息,例如函数,更多信息请参阅 此处)。
示例
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
的状态应该保存在磁盘上,比如用于数据归一化的一些 均值 和 方差 等。
在重新加载 DatasetH
后,用户需要重新初始化它。这意味着用户可以重置 DatasetH
或 QlibDataHandler
的一些状态,比如 instruments、start_time、end_time 和 segments 等,并根据这些状态生成新的数据(数据不是状态,不应保存在磁盘上)。
一个更详细的示例在这个 链接 中。
API
请参考 Serializable API。