Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python2中加载Python3 Pickled SKlearn模型_Python_Python 2.7_Scikit Learn_Pickle_Python 3.6 - Fatal编程技术网

如何在Python2中加载Python3 Pickled SKlearn模型

如何在Python2中加载Python3 Pickled SKlearn模型,python,python-2.7,scikit-learn,pickle,python-3.6,Python,Python 2.7,Scikit Learn,Pickle,Python 3.6,我有一个Python 3.6脚本,用于训练SKLearn模型,然后使用以下代码保存模型: with open('filepath', 'wb') as f: pickle.dump(trained_model, f, protocol=2) 当我尝试在Python3.6中加载pickle时,结果很好: >>with open('filepath', 'rb') as f: >> model = pickle.load(f) >> >>

我有一个Python 3.6脚本,用于训练SKLearn模型,然后使用以下代码保存模型:

with open('filepath', 'wb') as f:
    pickle.dump(trained_model, f, protocol=2)
当我尝试在Python3.6中加载pickle时,结果很好:

>>with open('filepath', 'rb') as f:
>>    model = pickle.load(f)
>>
>>model

RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
        max_depth=None, max_features='auto', max_leaf_nodes=None,
        min_impurity_decrease=0.0, min_impurity_split=None,
        min_samples_leaf=1, min_samples_split=2,
        min_weight_fraction_leaf=0.0, n_estimators=80, n_jobs=1,
        oob_score=False, random_state=None, verbose=0,
        warm_start=False)
在Python 2.7中运行相同的pickle.load命令时,出现以下错误:

>>with open('filepath', 'rb') as f:
>>    model = pickle.load(f)

ValueError: non-string names in Numpy dtype unpickling
查看文档和类似情况,将protocol设置为2应该使pickle文件兼容。导致此问题的原因是什么?如何解决此问题?

您可以使用而不是
.load()
来获取更有用的回溯

但是,如果故障部分在
numpy
的代码中,您仍然需要使用C调试器或手动跟踪源代码…
…或在馈送到
numpy
的取消勾选例程的部件上使用,并尝试猜测它有什么问题

  • 这是为你做的!它打印了pickle数据的反汇编,并带有偏移量。尽管您可能仍然需要规范来找出冲突的性质

也就是说,Do警告说不支持在其他版本和/或体系结构中加载模型数据,并建议改为保存源材料。

这是完整的回溯吗?不幸的是,是的。我现在不能说任何其他内容,因为您没有为我提供任何诊断信息。请参阅更新,这可能会对您有很大帮助。指向_load()的链接“强制使用纯python…”似乎指向了错误的方向。应使用永久性剂