章节大纲

  • 序列化


    简介

    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

    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 的状态应该保存到磁盘上,例如用于数据归一化的一些 meanvariance 等。

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

    更详细的示例可以在这个链接中找到。

    API

    请参阅 Serializable API