scikit-learn中如何保存模型?
有些模型,比如rf應該是可以保存著的,stackoverflow上見過一個用cPickle的,但是我自己的情況用了無效,不知道還有什麼方法?
sklearn中提供了高效的模型持久化模塊joblib,將模型保存至硬碟。
from sklearn.externals import joblib
#lr是一個LogisticRegression模型
joblib.dump(lr, "lr.model")
lr = joblib.load("lr.model")
Scikit-learn 官網上建議的兩種方式:
1. pickle&>&>&> 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)
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
decision_function_shape=None, degree=3, gamma="auto", kernel="rbf",
max_iter=-1, probability=False, random_state=None, shrinking=True,
tol=0.001, verbose=False)
&>&>&> import pickle
&>&>&> s = pickle.dumps(clf)
&>&>&> clf2 = pickle.loads(s)
&>&>&> clf2.predict(X[0:1])
array([0])
&>&>&> y[0]
0
&>&>&> from sklearn.externals import joblib
&>&>&> joblib.dump(clf, "filename.pkl")
&>&>&> clf = joblib.load("filename.pkl")
首先,joblib確實是一個選項,同樣用裝有sklearn的python讀取是個選擇。
其次,如果是模型上線,很可能是python訓練模型之後,交給技術部門用java正式上線運行,這個時候joblib就不行了,此時最好用pmml,github上有sklearntopmml的模塊可以免費使用,強烈推薦。
進一步詢問:joblib.dump成pkl文件還是model文件??有什麼區別
請參考以下問題
sklearn的模型如何保存下來?
謝謝!
只要是sklearn裡面的統計學習方法或者演算法,都可以用他的統一介面來保存持久化模型pickle或者joblib
from sklearn.externals import joblib
joblib.dump(gnb, "filename.pkl")
clf = joblib.load("filename.pkl")看文檔,官方文檔就有。sci中的joblib就可以保存在硬碟上
不是有個pickle嗎(它和cpickle的差別我也不是特別清楚),但是據說存類實例是有點問題的。scikit-learn里還提供了一個叫joblib的模塊,雖然我也還不是很清楚。
推薦閱讀: