Scikit-Learn 中的模型持久性?

ris*_*waj 6 python serialization pickle jsonpickle scikit-learn

我正在尝试保存和加载 scikit-learn 模型,但当保存和加载发生在不同的 python 版本上时遇到问题。这是我尝试过的:

  1. 使用pickle在python3中保存模型并在python2中反序列化。这适用于某些模型,如LR、SVM,但不适用于KNN。

    >>> pickle.load(open("inPy3.pkl", 'rb')) #KNN model
    ValueError: non-string names in Numpy dtype unpickling
    
    Run Code Online (Sandbox Code Playgroud)
  2. 另外,我尝试使用 jsonpickle 在 json 中序列化和反序列化,但出现以下错误。

    data = jsonpickle.encode(lr) #lr = logisticRegression Model
    jsonpickle.decode(data)
    AttributeError: 'dict' object has no attribute '__name__'
    
    Run Code Online (Sandbox Code Playgroud)

另外,我想知道是否有一些实用程序可以用来将 scikit-learn 模型对象序列化和反序列化为人类可读的格式(json、xml、protobuf 等)。

Jul*_*lia 2

您可以提取并存储它们的系数,而不是对整个模型进行酸洗。然后加载系数并用它们初始化模型。

与 sklearn 升级问题相关。类似的方法对于 python 版本也有效。