腌制复杂的字典/使字典可移植

问题描述 投票:0回答:0

我有一本字典,我在其中收集 ML 模型,我用数据类构建如下:

  @dataclass(frozen=True, order=True)
    class Model:
        data_sample: str
        predictive_model: object
        predictions: pd.DataFrame
        binary: object
        type: str
        inputs: list
        output: str
        explain: bool

        def to_dict(self):
            return asdict(self)

我生成多个模型并使用数据类来验证单个训练模型的输入。我将此类作为 ML 列表的字典:

ML.append(model.to_dict())

binary
predictive_model
的对象是来自 scikit-learn、TPOT、SciPy 等库的模型(python 类)。人们应该假设这些对象中发生了很多继承。我正在努力使这个列表可移植到另一个环境。我使这个可移植的核心想法是使用
joblib
dill
pickle
之类的库到
.dump
训练模型的运行时中的字典,并使用
.load
方法加载字典。当我这样做时,我注意到有一个
ModuleNotFoundError: No module named ...
错误。我已经发现这是一个常见问题,并且这里有关于此错误的答案:Python pickling after changing a module's directory

我的问题是:有没有更好的方法来“导出”我的字典?最好以这样一种方式复制它需要的所有东西,这样我就可以在别处运行它而不需要管理任何导入?

我觉得酸洗可能不是我需要的..

python pickle joblib dill
© www.soinside.com 2019 - 2024. All rights reserved.