【问题标题】:How to save a trained model by scikit-learn? [duplicate]如何通过 scikit-learn 保存训练好的模型? [复制]
【发布时间】:2019-09-30 02:43:49
【问题描述】:
我正在尝试重新创建训练模型的预测,但我不知道如何保存模型。
例如,我想保存经过训练的高斯处理回归模型,并在训练完模型后重新创建预测。
我用来训练模型的包是 scikit-learn。
kernel = DotProduct() + WhiteKernel()
gpr = GaussianProcessRegressor(kernel=kernel,random_state=0)
gpr.fit(X,y)
【问题讨论】:
-
-
共享的答案是否可以接受?如果 OP 找到了更好的解决方案,我(老实说)真的有兴趣学习一个.. |因为我正在探索 scikit 以外的选项,here 是我使用过的条目..
标签:
python
python-3.x
scikit-learn
save
pre-trained-model
【解决方案1】:
你可以使用:
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])
2。 joblib
来自scikit-learn documentation:
在scikit-learn的具体情况下,使用joblib的可能会更好
更换泡菜(转储和加载),这在
通常在内部携带大型 numpy 数组的对象
适合 scikit-learn 估计器,但只能腌制到磁盘
而不是字符串:
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])
【讨论】:
-
还有一点,您可以添加compress=3 而joblib.dump 这将导致文件更小。您可以查看示例here 压缩将文件大小减小了约 5 倍。
【解决方案2】:
您可以使用 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'))
希望对你有帮助!
source