是否可以一次加载模型并在python中再次重用?

ash*_*shu 2 python scikit-learn

我已经训练了scikit学习模型,现在想在我的python代码中使用。有没有办法可以重用同一模型实例?以一种简单的方式,我可以在需要时再次加载模型,但是由于需求越来越频繁,我想一次加载模型并再次使用它。

有什么办法可以在python中实现吗?

这是预测.py中一个线程的代码:

clf = joblib.load('trainedsgdhuberclassifier.pkl')
clf.predict(userid)
Run Code Online (Sandbox Code Playgroud)

现在,对于另一个用户,我不想再次启动prediction.py并花费时间来加载模型。有没有办法,我可以简单地写。

new_recommendations = prediction(userid)
Run Code Online (Sandbox Code Playgroud)

我应该在这里使用多处理吗?我不确定 !!

Oq0*_*q01 5

根据Scikit学习文档,以下代码可以为您提供帮助:

from sklearn import svm
from sklearn import datasets
clf = svm.SVC()
iris = datasets.load_iris()
X, y = iris.data, iris.target
clf.fit(X, y)  
import pickle
s = pickle.dumps(clf)
clf2 = pickle.loads(s)
clf2.predict(X[0])
Run Code Online (Sandbox Code Playgroud)

在scikit的特定情况下,使用joblib代替pickle(joblib.dump和joblib.load)可能会更有趣,这种方法在内部携带大型numpy数组的对象上效率更高,这通常适用于scikit-学习估计器,但只能将其腌制到磁盘而不是字符串中:

from sklearn.externals import joblib
joblib.dump(clf, 'filename.pkl') 
Run Code Online (Sandbox Code Playgroud)

稍后,您可以使用以下方法加载腌制的模型(可能在另一个Python进程中):

clf = joblib.load('filename.pkl') 
Run Code Online (Sandbox Code Playgroud)

再次加载模型后。您可以重新使用它而无需重新培训。

clf.predict(X[0])
Run Code Online (Sandbox Code Playgroud)

资料来源:http : //scikit-learn.org/stable/modules/model_persistence.html