机器学习 — 训练好的模型保存与加载(joblib、pickle)

机器学习 — 训练好的模型保存与加载(joblib、pickle)

一、前言

当我们训练好一个模型model后,如果在其他程序中或者下次想继续使用这个model,我们就需要把这个model保存下来,下次使用时直接导入就好了,不需要重新训练。

二、实现方式

1. 方式一:joblib

采用joblib模块来保存model,首先安装joblib:

pip install joblib

核心代码如下

import joblib

# 保存 model
joblib.dump(regr, '../../model/regr.pkl')

# 加载 model
clf = joblib.load('../../model/regr.pkl')

完整示例代码如下:

#!/usr/bin/env python
# encoding: utf-8
'''
@Author  : pentiumCM
@Email   : *********@qq.com
@Software: PyCharm
@File    : linear_regression.py
@Time    : 2019/12/19 0:19
@desc	 : 线性回归示例
'''

from matplotlib import pyplot as plot
import numpy as np
from sklearn import linear_model
import joblib as jl

# 构建训练数据
X = np.array([48, 57, 50, 54, 64, 61, 43, 59])              # 体重
Y = np.array([165, 165, 157, 170, 175, 165, 155, 170])      # 身高

# 调整训练数据的维度
X_train = np.reshape(X, (-1, 1))
Y_train = np.reshape(Y, (-1, 1))

# 建立线性模型
regr = linear_model.LinearRegression()
regr.fit(X_train, Y_train)

# 保存 model
jl.dump(regr, '../../model/regr.pkl')

print("模型保存成功")

# 加载 model
clf = jl.load('../../model/regr.pkl')
Y_pred = clf.predict(X_train)

# 可视化
# 1.训练集数据
plot.scatter(X_train, Y_train, color='green')
# 2.线性预测数据
plot.plot(X_train, Y_pred, color='red')
plot.show()

关于pkl文件:
生成的model文件是pkl文件,pkl是python的一种存储文件,需要安装python打开,读取pkl文件需要import pickle包。
所以下面介绍直接使用python自带的pickle来保存训练好的model


2. 方式二:pickle

使用python自带的pickle,来保存和加载模型,核心代码如下

import pickle

# 保存 model
f = open('../../model/regr2.pkl', 'wb')
pickle.dump(regr, f)
f.close()

# 加载 model
f = open('../../model/regr2.pkl', 'rb')
clf = pickle.load(f)
f.close()

完整示例代码如下:

#!/usr/bin/env python
# encoding: utf-8
'''
@Author  : pentiumCM
@Email   : *********@qq.com
@Software: PyCharm
@File    : linear_regression.py
@Time    : 2019/12/19 0:19
@desc	 : 线性回归示例
'''

from matplotlib import pyplot as plot
import numpy as np
from sklearn import linear_model
import pickle

# 构建训练数据
X = np.array([48, 57, 50, 54, 64, 61, 43, 59])              # 体重
Y = np.array([165, 165, 157, 170, 175, 165, 155, 170])      # 身高

# 调整训练数据的维度
X_train = np.reshape(X, (-1, 1))
Y_train = np.reshape(Y, (-1, 1))

# 建立线性模型
regr = linear_model.LinearRegression()
regr.fit(X_train, Y_train)

# 保存 model
f = open('../../model/regr2.pkl', 'wb')
pickle.dump(regr, f)
f.close()

print("模型保存成功")

# 加载 model
f = open('../../model/regr2.pkl', 'rb')
clf = pickle.load(f)
f.close()

Y_pred = clf.predict(X_train)

# 可视化
# 1.训练集数据
plot.scatter(X_train, Y_train, color='green')
# 2.测试数据
plot.plot(X_train, Y_pred, color='red')
plot.show()

注意:
pickle.dump(regr, f)和pickle.load(f)要一起使用,不然会报以下问题:
_pickle.UnpicklingError: invalid load key, ‘\x00’.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值