0

This page show methods to save model using either pickle:

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

or joblib:

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

What if one needs to save 2 models? I can obviously save them in 2 separate files but can I save them together in one file? Is it possible to save a list which has 2 models:

modlist = [clf1, clf2]

How can this modlist be saved in one file?

rnso
  • 23,686
  • 25
  • 112
  • 234

1 Answers1

0

You can dump/load a variety of data structures using pickle. A list of sklearn fitted models, in particular, would be one example:

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])

Let me know if this works for you.

Lafa
  • 461
  • 1
  • 5
  • 14