我已经训练了 scikit 学习模型,现在我想在我的 python 代码中使用。 有没有办法可以重复使用相同的模型实例? 以一种简单的方式,我可以在需要时再次加载模型,但由于我的需求更频繁,我想加载一次模型并再次使用它。
有什么方法可以在 python 中实现吗?
这是 prediction.py 中一个线程的代码:
clf = joblib.load('trainedsgdhuberclassifier.pkl')
clf.predict(userid)
现在对于另一个用户,我不想再次启动 prediction.py 并花时间加载模型。有没有办法,我可以简单地写。
new_recommendations = prediction(userid)
我应该在这里使用多处理吗?我不确定!!
最佳答案
根据 Scikit-learn 文档,以下代码可能对您有所帮助:
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])
在 scikit 的特定情况下,使用 joblib 的 pickle 替换(joblib.dump 和 joblib.load)可能更有趣,这对于内部携带大型 numpy 数组的对象更有效,这通常是适合 scikit-learn 估计器,但只能腌制到磁盘而不是字符串:
from sklearn.externals import joblib
joblib.dump(clf, 'filename.pkl')
稍后您可以加载回已腌制的模型(可能在另一个 Python 进程中):
clf = joblib.load('filename.pkl')
再次加载模型后。您可以重复使用它而无需重新训练它。
clf.predict(X[0])
来源:http://scikit-learn.org/stable/modules/model_persistence.html
关于python - 是否可以加载一次模型并在 python 中再次重用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26493003/