模型的保存与加载joblib

一、概述

1.1 模型的保存

当模型完成训练之后,可以得到参数,例如线性回归得到权重与偏置等。可以将这些参数保存起来,方便下次调用。

一般与Pipeline联合使用,先用Pipline操作,在保存Pipline训练好的模型。

如果不使用Pipeline,则需要将每个训练都保存起来,太过麻烦。

 

1.2 模型的加载

将保存的模型,再次加载,训练的各种参数可以直接使用。

 

 

二、 代码

 

from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_boston
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PolynomialFeatures
import joblib
import warnings
warnings.filterwarnings("ignore")


X,y = load_boston(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=1)


pipe_lr = Pipeline([
    ('pf', PolynomialFeatures(degree=3,include_bias=False,interaction_only=False)),
    ('sc', StandardScaler()),
    ('clf', Ridge(alpha=0.8))])

# fit依次对前n-1的学习器执行fit和transform方法,并且对最后一个学习器执行fit方法
pipe_lr.fit(X_train, y_train)
# score依次对前n-1的学习器执行transform方法,并且对最后一个学习器执行score方法
print(f'Train score: {pipe_lr.score(X_train, y_train):.2%},Test score: {pipe_lr.score(X_test, y_test):.2%},')
clf = pipe_lr.named_steps['clf']
print(f'前3个权重:{clf.coef_[:5]}')

# 模型保存(sklearn框架保存后缀建议采用pkl)
joblib.dump(value=pipe_lr, filename='../data/pipe_lr.pkl')


# 模拟在其它页面加载模型
pipe_lr_l=joblib.load(filename='../data/pipe_lr.pkl')
# 调用之前的训练参数
clf_l = pipe_lr_l.named_steps['clf']
print(f'前3个权重:{clf_l.coef_[:5]}')        #结果与前面训练的结果相同
X, y = load_boston(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=1)
# 可以返现训练结果与前面的训练结果也相同
print(f'Train score: {pipe_lr_l.score(X_train, y_train):.2%},Test score: {pipe_lr_l.score(X_test, y_test):.2%},')

 

posted @ 2022-12-18 21:19  qsl_你猜  阅读(407)  评论(0编辑  收藏  举报