1. 程式人生 > >python sklearn svm模型的儲存與載入呼叫

python sklearn svm模型的儲存與載入呼叫

對於機器學習的一些模型,跑完之後,如果下一次測試又需要重新跑一遍模型是一件很繁瑣的事,這時候我們就需要儲存模型,再載入呼叫。

樓主發現有這些儲存模型的方法,網上有很多錯誤的例子,所以給大家在整理一下。(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檔案中呼叫模型的方法,如果大家知道的話,也希望能告訴樓主,感謝!

考慮到如果預測資料又需要跑一遍模型,樓主的建議是,把儲存模型的過程寫進函式裡面,下次不再呼叫該函式即可。