python sklearn svm模型的儲存與載入呼叫
阿新 • • 發佈:2018-12-14
對於機器學習的一些模型,跑完之後,如果下一次測試又需要重新跑一遍模型是一件很繁瑣的事,這時候我們就需要儲存模型,再載入呼叫。
樓主發現有這些儲存模型的方法,網上有很多錯誤的例子,所以給大家在整理一下。(python3)
1.利用pickle
import pickle model.fit(train_X, train_y) s=pickle.dumps(model) f=open('svm.model', "wb+") f.write(s) f.close() print ("Done\n") 模型儲存 這裡的model已經是生成好的模型了,注意一定要用"wb+",否則會報錯
f2=open('svm.model','rb') s2=f2.read() model1=pickle.loads(s2) expected = test_y predicted = model1.predict(test_X) 模型呼叫,注意讀取方式'rb',否則會報錯
2.利用joblib
from sklearn.externals import joblib model.fit(train_X, train_y) joblib.dump(model, "train1_model.m") print ("Done\n") 模型讀取
model1 = joblib.load("train1_model.m") expected = test_y predicted = model1.predict(test_X) 模型呼叫
相對於上一方法,這個方法寫起來簡單明瞭多了。
好像還有cv方法的,樓主沒有嘗試。
這裡的呼叫僅限在同一個py檔案中,如果在另外一個py檔案中呼叫,預測結果會出錯,具體原因樓主也不清楚,樓主也一直在找一個在另外一個py檔案中呼叫模型的方法,如果大家知道的話,也希望能告訴樓主,感謝!
考慮到如果預測資料又需要跑一遍模型,樓主的建議是,把儲存模型的過程寫進函式裡面,下次不再呼叫該函式即可。