为什么会出现持久性sklearn模型的开箱错误?

问题描述 投票:2回答:1

我有一个经过训练的决策树模型,该模型是我在Google研究笔记本中创建的,并且像这样腌制:

pickle.dump(tree, open(tree_15.sav, 'wb'))

我们有一个从docker构建的在线分析项目,它创建了我用来创建模型的相同环境。 (以及其他用于其他功能的软件包。)我想在该其他项目中导入我的模型,并添加以下行:

predictive_model = pickle.load(open(self.sav_path, 'rb'), fix_imports=True, encoding='latin1')

但是我得到:

_pickle.UnpicklingError: invalid load key, '\xef'.

有趣的是,我无法在本地复制相同的错误。我使用Windows桌面(因此在本地从docker构建时遇到问题),但是每个软件包使用相同版本,.sav文件未损坏-哈希检出-等等。每次都在本地运行得很好。相同模型的先前版本也在线运行。老实说,我在这里很迷茫。

python scikit-learn persistence pickle
1个回答
0
投票

通常,gzipopen()不具有内置open()的问题,所以为什么不尝试以下操作:

import gzip, pickle
with gzip.open(self.sav_path, 'rb') as f:
    predictive_model = pickle.load(f, fix_imports=True, encoding='latin1')
© www.soinside.com 2019 - 2024. All rights reserved.