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)
我应该在这里使用多处理吗?我不确定 !!
根据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