赞
踩
大家好,我是翔宇!今天我给大家分享机器学习模型的几种保存方式!
大家都知道,在我们做数据分析的时候,不仅需要掌握业务,对业务指标进行监控等,而且在有些时候我们需要掌握一些数据挖掘的方法来满足一些“特殊”的工作需要。这就经常用到机器学习的模型进行分类、回归等。那么,很多时候我们都是将重点放在模型的算法、效果上,很少有人在乎当我们训练出一个模型后,如果我们需要将其保存下来,以便任何需要的时候都可以拿出来使用。因此,今天我特意分享一下,在Python中,如果我们想要完成这样的一个需求,我们该怎样做!
模型训练(下面保存方式基于此例,这里训练一棵决策树来预测boston房价)
0.1 导入Boston房价数据
# 导入模块
from sklearn.datasets import load_boston
# 实例化
boston = load_boston()
0.2 划分数据
from sklearn.model_selection import train_test_split as TTS # 用来划分数据集
# 划分数据集,xtrain为训练特征,xtest测试特征,ytrain训练标签,ytest测试标签
# test_size=0.3表示30%数据集用来测试
xtrain,xtest,ytrain,ytest = TTS(boston.data,boston.target,test_size=0.3)
0.3 训练模型
from sklearn.tree import DecisionTreeRegressor # 导入回归决策树模块
DT = DecisionTreeRegressor().fit(xtrain,ytrain) # 用训练集训练模型
DT.score(xtest,ytest)
out: 0.7601720678519819 (什么都没做的去情况下R方已经是0.76)
这里我们的一个简单的模型就已经训练好了,接下来就是保存它了.
1.使用pickle保存模型
# 导入包,无需pip install
import pickle
# 保存模型,我们想要导入的是模型本身,所以用“wb”方式写入,即是二进制方式,DT是模型名字
pickle.dump(DT,open("dtr.dat","wb")) # open("dtr.dat","wb")意思是打开叫"dtr.dat"的文件,操作方式是写入二进制数据
# 加载模型
loaded_model = pickle.load(open("dtr.dat","rb"))
# 使用模型,对测试数据集进行预测
loaded_model.predict(xtest)
结果:
2.使用joblib保存模型
# 导入包
import joblib
# 保存模型
joblib.dump(DT,'DT.dat') # 第二个参数只需要写文件名字,是不是比pickle更人性化
# 加载模型
loaded_model2 = joblib.load('DT.dat')
# 使用模型
loaded_model2.predict(xtest)
结果:
在强学习器xgboost中我们训练好模型就可以直接进行保存!当然不了解的话,前面两种已经足够使用了,我这里大致写一下代码.供有兴趣的朋友阅读,当然,如果需要了解更多,请移步到翔宇公众号“Python和数据分析”
3.在xgboost中直接保存模型
# 模型保存(这里假设模型名字xgboost)
xgboost.save_model('train.model')
# 加载模型
loaded_model3 = xgb.Booster(model_file='train.model')
# 使用模型
loeded_model3.predict(xtest)
好了,今天的内容就分享这里了,如果对你有帮助请点赞、分享加关注,防止错过更多内容哦!
我是翔宇,公众号是“Python和数据分析”,我们明天见!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。