人工智能--机器学习--模型持久化

背景

当我们训练好一个模型之后,将其保存下来之后下次就可以直接使用而不需要再次耗费很多时间去重新对模型进行训练。

使用python自带的pickle

例1:

from sklearn.ensemble import RandomForestClassifier
from sklearn import datasets
import pickle

#方法一:python自带的pickle
(X,y) = datasets.load_iris(return_X_y=True)
rfc = RandomForestClassifier(n_estimators=100,max_depth=100)
rfc.fit(X,y)
print(rfc.predict(X[0:1,:]))
#save model
f = open('saved_model/rfc.pickle','wb')
pickle.dump(rfc,f)
f.close()
#load model
f = open('saved_model/rfc.pickle','rb')
rfc1 = pickle.load(f)
f.close()
print(rfc1.predict(X[0:1,:]))

例2:

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)  
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf',
max_iter=-1, probability=False, random_state=None, shrinking=True,
tol=0.001, verbose=False)

import pickle
s = pickle.dumps(clf)
clf2 = pickle.loads(s)
clf2.predict(X[0:1])

使用sklearn中的模块joblib

这种方式更加推荐,速度更快
核心代码只有两行

from sklearn.ensemble import RandomForestClassifier
from sklearn import datasets
import joblib
#方法二:使用sklearn中的模块joblib
(X,y) = datasets.load_iris(return_X_y=True)
rfc = RandomForestClassifier(n_estimators=100,max_depth=100)
rfc.fit(X,y)
print(rfc.predict(X[0:1,:]))
#save model
joblib.dump(rfc, 'saved_model/rfc.pkl')
#load model
rfc2 = joblib.load('saved_model/rfc.pkl')
print(rfc2.predict(X[0:1,:]))

实例

1、训练模型

import numpy as np
from sklearn.linear_model import LogisticRegression
 
X_train = np.array([[1,2,3],[4,5,6],[10,9,8]])
Y_train = np.array([0,0,1])
 
X_test = np.array([[2,3,4],[9,8,7]])
Y_test = np.array([0,1])
 
# 逻辑回归模型
LR = LogisticRegression()
# 训练模型
LR.fit(X_train,Y_train)
 
print('预测结果:\n', LR.predict(X_test))
print('预测各标签的概率值:\n', LR.predict_proba(X_test))
 
print('训练集准确率:', LR.score(X_train,Y_train))
print('测试集准确率:', LR.score(X_test,Y_test))

2、创建文件目录,保存模型

import os
from sklearn.externals import joblib
 
# 创建文件目录
dirs = 'testModel'
if not os.path.exists(dirs):
    os.makedirs(dirs)
    
# 保存模型
joblib.dump(LR, dirs+'/LR.pkl')

3、读取模型

# 读取模型
LR = joblib.load(dirs+'/LR.pkl')
 
test = np.array([[3,4,5],[8,7,6]])
print('预测结果:\n', LR.predict(test))

参考文献

xgboost模型训练到部署

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值