在學習機器學習的過程中,很多人都應該有這樣的疑問:模型訓練好了,以後要用怎麼辦呢?肯定不能再跑一邊資料,重新訓練模型以供使用,因為這樣太費時間。最好的辦法當然是,訓練和預測分開。訓練好模型後,將模型儲存好,當需要預測時,直接讀取模型檔案來呼叫,進行預測。
無論是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)