如何在一个文件中保存2个sklearn模型

时间:2018-10-16 12:25:21

标签: neural-network pickle joblib

This page显示了使用pickle来保存模型的方法:

>>> import pickle
>>> s = pickle.dumps(clf)
>>> clf2 = pickle.loads(s)

joblib

>>> from sklearn.externals import joblib
>>> joblib.dump(clf, 'filename.joblib') 
>>> clf = joblib.load('filename.joblib') 

如果一个人需要保存2个模型怎么办?我显然可以将它们保存在2个单独的文件中,但可以将它们一起保存在一个文件中吗?是否可以保存包含2个模型的列表:

modlist = [clf1, clf2]

如何将此modlist保存在一个文件中?

1 个答案:

答案 0 :(得分:0)

您可以使用pickle转储/加载各种数据结构。尤其是一个sklearn拟合模型列表:

from sklearn import svm
from sklearn import datasets
from sklearn.naive_bayes import MultinomialNB
import pickle

clf1 = svm.SVC(gamma='scale')
clf2 = MultinomialNB()

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

filename = "models.sav"

modlist = [clf1, clf2]

s = pickle.dump(modlist, open(filename, 'wb'))

modlist_loaded = pickle.load(open(filename, 'rb'))

clf1_loaded = modlist_loaded[0]
clf2_loaded = modlist_loaded[1]

print clf1_loaded.predict(X[:10])
print clf2_loaded.predict(X[:10])

让我知道这是否对您有用。