如何通过 scikit-learn 保存训练好的模型?

Lon*_*ong 13 python save python-3.x scikit-learn pre-trained-model

我正在尝试重新创建训练模型的预测,但我不知道如何保存模型。例如,我想保存训练好的高斯处理回归器模型并在训练模型后重新创建预测。我用来训练模型的包是 scikit-learn。

kernel = DotProduct() + WhiteKernel()
gpr = GaussianProcessRegressor(kernel=kernel,random_state=0)
gpr.fit(X,y)
Run Code Online (Sandbox Code Playgroud)

sen*_*nce 20

您可以使用:

1. pickle

from sklearn import svm
from sklearn import datasets

iris = datasets.load_iris()
X, y = iris.data, iris.target

clf = svm.SVC()
clf.fit(X, y)  

##########################
# SAVE-LOAD using pickle #
##########################
import pickle

# save
with open('model.pkl','wb') as f:
    pickle.dump(clf,f)

# load
with open('model.pkl', 'rb') as f:
    clf2 = pickle.load(f)

clf2.predict(X[0:1])
Run Code Online (Sandbox Code Playgroud)

2. joblib

scikit-learn文档

在 scikit-learn 的特定情况下,使用 joblib 替换 pickle(转储和加载)可能会更好,这对于内部携带大型 numpy 数组的对象更有效,这对于拟合的 scikit-learn 估计器来说通常是这种情况,但是只能pickle到磁盘而不是字符串:

from sklearn import svm
from sklearn import datasets

iris = datasets.load_iris()
X, y = iris.data, iris.target

clf = svm.SVC()
clf.fit(X, y)  

##########################
# SAVE-LOAD using joblib #
##########################
import joblib

# save
joblib.dump(clf, "model.pkl") 

# load
clf2 = joblib.load("model.pkl")

clf2.predict(X[0:1])
Run Code Online (Sandbox Code Playgroud)

  • 另一件事是,您可以在“joblib.dump”时添加“compress=3”,这将导致文件更小。您可以在[此处](https://mljar.com/blog/save-load-random-forest/)查看示例,压缩可将文件大小减小约 5 倍。 (2认同)

Eri*_*ric 10

您可以使用 pickle 操作保存和加载模型,以序列化机器学习算法并将序列化格式保存到文件中。

import pickle
# save the model to disk
filename = 'gpr_model.sav'
pickle.dump(gpr, open(filename, 'wb')) 

# load the model from disk
loaded_model = pickle.load(open(filename, 'rb'))
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!

来源