如何在一个文件中保存 2 个 sklearn 模型
How to save 2 sklearn models in one file
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
如何保存在一个文件中?
您可以使用 pickle dump/load 多种数据结构。一个 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])
让我知道这是否适合你。
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
如何保存在一个文件中?
您可以使用 pickle dump/load 多种数据结构。一个 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])
让我知道这是否适合你。