序列化
Section outline
-
序列化
简介
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
。Python##=============转储数据集============= dataset.to_pickle(path="dataset.pkl") # dataset 是 qlib.data.dataset.DatasetH 的一个实例 ##=============重新加载数据集============= 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
等,并根据这些状态生成新数据(数据不是状态,不应该保存到磁盘上)。
更详细的示例可以在这个链接中找到。
API
请参阅 Serializable API。
-