【问题标题】:Why do I get unpickling error for persistent sklearn model?为什么我会收到持久性 sklearn 模型的 unpickling 错误?
【发布时间】:2020-01-31 09:35:57
【问题描述】:

我有一个训练有素的决策树模型,我在谷歌研究笔记本中创建,并像这样腌制:

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】:

    通常,gzipopen() 没有内置open() 的问题,所以为什么不尝试以下方法:

    import gzip, pickle
    with gzip.open(self.sav_path, 'rb') as f:
        predictive_model = pickle.load(f, fix_imports=True, encoding='latin1')
    

    【讨论】:

    • 感谢您的建议。我试过你的 sn-p,现在我得到:OSError: Not a gzipped file (b'\x80\x03')
    猜你喜欢
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 2020-11-05
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    相关资源
    最近更新 更多