在学习机器学习的过程中,很多人都应该有这样的疑问:模型训练好了,以后要用怎么办呢?肯定不能再跑一边数据,重新训练模型以供使用,因为这样太费时间。最好的办法当然是,训练和预测分开。训练好模型后,将模型保存好,当需要预测时,直接读取模型文件来调用,进行预测。
无论是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)