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)
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
修复jar包里面的log4j漏洞