機器學習:Python模型的儲存與讀取
阿新 • • 發佈:2018-12-21
在學習機器學習的過程中,很多人都應該有這樣的疑問:模型訓練好了,以後要用怎麼辦呢?肯定不能再跑一邊資料,重新訓練模型以供使用,因為這樣太費時間。最好的辦法當然是,訓練和預測分開。訓練好模型後,將模型儲存好,當需要預測時,直接讀取模型檔案來呼叫,進行預測。
無論是sklearn還是TensorFlow,都有模型的儲存和呼叫方法。這裡我們介紹使用pickle進行模型儲存和呼叫的方法。
1.匯入pickle
import pickle
2.訓練模型
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.2) clf = LinearRegression(n_jobs=-1) clf.fit(X_train, y_train)
3.儲存模型
with open('linearregression.pickle','wb') as f:
pickle.dump(clf, f)
4.呼叫模型
pickle_in = open('linearregression.pickle','rb')
clf = pickle.load(pickle_in)
5.使用模型
predict_result = clf.predict(X_predict)
完整程式碼:
X = np.array(df.drop(['label'], 1)) #用於預測的資料 X_predict = X[-100:] #訓練資料 X = X[:-100] df.dropna(inplace=True) y = np.array(df['label']) #資料劃分 X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.2) #訓練模型 # clf = LinearRegression(n_jobs=-1) # clf.fit(X_train, y_train) # confidence = clf.score(X_test, y_test) #儲存模型 # with open('linearregression.pickle','wb') as f: # pickle.dump(clf, f) #讀取本地儲存的模型 pickle_in = open('linearregression.pickle','rb') clf = pickle.load(pickle_in) #使用模型預測 predict_result = clf.predict(X_predict)