Python中机器学习模型的几种保存方式

Python进行机器学习的几种模型保存方式!

大家好,我是翔宇!今天我给大家分享机器学习模型的几种保存方式!

大家都知道,在我们做数据分析的时候,不仅需要掌握业务,对业务指标进行监控等,而且在有些时候我们需要掌握一些数据挖掘的方法来满足一些“特殊”的工作需要。这就经常用到机器学习的模型进行分类、回归等。那么,很多时候我们都是将重点放在模型的算法、效果上,很少有人在乎当我们训练出一个模型后,如果我们需要将其保存下来,以便任何需要的时候都可以拿出来使用。因此,今天我特意分享一下,在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)

结果:

3.在xgboost中直接保存模型

# 模型保存(这里假设模型名字xgboost)
xgboost.save_model(train.model)  
# 加载模型
loaded_model3 = xgb.Booster(model_file=train.model)
# 使用模型
loeded_model3.predict(xtest)
经验分享 程序员 微信小程序 职场和发展