python保存训练模型,提取并使⽤训练模型存储模型
训练好的模型可以进⾏存储,下次有测试数据就可以直接使⽤了
pickle⽅法
from sklearn import svm
from sklearn import datasets
clf = svm.SVC()
iris = datasets.load_iris()
X,y = iris.data,iris.target
clf.fit(X,y)
#保存
#method 1:pickle
import pickle
with open('D:/python/workspace/clf.pickle','wb')as f: #python路径要⽤反斜杠
pickle.dump(clf,f) #将模型dump进f⾥⾯
这个时候在路径下⾯就会有⼀个.pickle的⽂件,存储的就是训练好的clf模型
提取模型的时候:
import pickle
from sklearn import datasets
iris = datasets.load_iris()
X,y = iris.data,iris.target
with open('D:/python/workspace/clf.pickle','rb') as f:
clf2 = pickle.load(f)#从f⽂件中提取出模型赋给clf2
print(clf2.predict(X))
输出预测值,说明原来的模型已经被提取出来了
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1
2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 2]
joblib⽅法
from sklearn import svm
from sklearn import datasets
clf = svm.SVC()
iris = datasets.load_iris()
X,y = iris.data,iris.target
clf.fit(X,y)
#保存
#method 2:joblib
als import joblib #joblib是sklearn的⼀个外部模块
joblib.dump(clf,'D:/python/workspace/clf.pkl') #将clf存⼊.pkl的⽂件中
提取模型的时候:
als import joblib
from sklearn import datasets
iris = datasets.load_iris()
import pickleX,y = iris.data,iris.target
clf3 = joblib.load('D:/python/workspace/clf.pkl')
print(clf3.predict(X))
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1
2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 2]模型已提取并已经可以⽤于预测分类
在处理⼤量数据的时候joblib的窗户⾥速度会⽐pickle更加快⼀点
对于神经⽹络训练的模型
拿个例⼦说:
dels import Sequential
from import Dense, Activation
model = Sequential() #建⽴模型
model.add(Dense(input_dim = 6,output_dim = 12))
model.add(Activation('relu')) #⽤relu函数作为激活函数,能够⼤幅提供准确度
model.add(Dense(input_dim = 12,output_dim = 1))
modelpile(loss='mean_squared_error', optimizer='adam') #编译模型
model.fit(x_train, y_train, nb_epoch = 10000, batch_size = 16) #训练模型,学习⼀万次
这个例⼦训练的时候迭代了10000次,⾮常耗时,要存储起来,做预测的时候直接使⽤:method1:储存训练参数weights
model.save_weights('del') #保存模型参数
调⽤的时候,由于只储存了参数,所以要将结构告诉给python:
model = Sequential() #建⽴模型
model.add(Dense(input_dim = 6,output_dim = 12))
model.add(Activation('relu')) #⽤relu函数作为激活函数,能够⼤幅提供准确度
model.add(Dense(input_dim = 12,output_dim = 1))
modelpile(loss='mean_squared_error', optimizer='adam') #编译模型
model.load_weights('del')
后⾯就可以直接⽤model.predict(x)
method2:储存全部整个模型
dels import Sequential
from import Dense, Activation
model = Sequential() #建⽴模型
model.add(Dense(input_dim = 6,output_dim = 12))
model.add(Activation('relu')) #⽤relu函数作为激活函数,能够⼤幅提供准确度
model.add(Dense(input_dim = 12,output_dim = 1))
modelpile(loss='mean_squared_error', optimizer='adam') #编译模型
model.fit(x_train, y_train, nb_epoch = 10000, batch_size = 16) #训练模型,学习⼀万次
model.save('del')
调⽤的时候
dels import load_model model = load_model('del')

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。