Python中的joblib模块详解

 更新时间:2023年08月24日 09:10:39   作者:sodaloveer  
这篇文章主要介绍了Python中的joblib模块详解,用已知的数据集经过反复调优后,训练出一个较为精准的模型,想要用来对格式相同的新数据进行预测或分类,常见的做法是将其训练好模型封装成一个模型文件,直接调用此模型文件用于后续的训练,需要的朋友可以参考下

背景

用已知的数据集经过反复调优后,训练出一个较为精准的模型,想要用来对格式相同的新数据进行预测或分类。

难道又要重复运行用于训练模型的源数据和代码?

常见的做法是将其训练好模型封装成一个模型文件,直接调用此模型文件用于后续的训练 。

一、保存最佳模型

joblib.dump(value,filename,compress=0,protocol=None)
  • value:任何Python对象,要存储到磁盘的对象。
  • filename:文件名,str.pathlib.Path 或文件对象。要在其中存储文件的文件对象或文件路径。与支持的文件扩展名之一(“.z”,“.gz”,“bz2”,“.xz”,“.lzma”)
  • compress:int从0到9或bool或2元组。数据的可选压缩级别。0或False不压缩,较高的值表示更多的压缩,但同时也降低了读写时间。使用3值通常是一个很好的折衷方案。如果compress为
  • True,则使用的压缩级别为3。如果compress为2元组,则第一个元素必须对应于受支持的压缩器之间的字符串(例如’zlib’,‘gzip’,‘bz2’,‘lzma’,'xz '),第二个元素必须是0到9的整数,对应于压缩级别。
  • protocol:不用管了,与pickle里的protocol参数一样

举例

  • 导入数据
import pandas as pd
# 训练集
file_pos="F:\\python_machine_learing_work\\501_model\\data\\训练集\\train_data_only_one.csv"
data_pos=pd.read_csv(file_pos,encoding='utf-8')
# 测试集
val_pos="F:\\python_machine_learing_work\\501_model\\data\\测试集\\test_data_table_only_one.csv"
data_val=pd.read_csv(val_pos,encoding='utf-8')
  • 划分数据
# 重要变量
ipt_col=['called_rate', 'calling_called_act_hour', 'calling_called_distinct_rp', 'calling_called_distinct_cnt', 'star_level_int', 'online_days', 'calling_called_raom_cnt', 'cert_cnt', 'white_flag_0', 'age', 'calling_called_cdr_less_15_cnt', 'white_flag_1', 'calling_called_same_area_rate', 'volte_cnt', 'cdr_duration_sum', 'calling_hour_cnt', 'cdr_duration_avg', 'calling_pre7_rate', 'cdr_duration_std', 'calling_disperate', 'calling_out_area_rate', 'calling_distinct_out_op_area_cnt','payment_type_2.0', 'package_price_group_2.0', 'is_vice_card_1.0']
#拆分数据集(一个训练集一个测试集)
def train_test_spl(train_data,val_data):
    global ipt_col
    X_train=train_data[ipt_col]
    X_test=val_data[ipt_col]
    y_train=train_data[target_col]
    y_test=val_data[target_col]
    return X_train, X_test, y_train, y_test
	X_train, X_test, y_train, y_test =train_test_spl(data_pos_4,data_val_4)
  • 训练模型
from sklearn.model_selection import GridSearchCV
def model_train(X_train,y_train,model):
    ## 导入XGBoost模型
    from xgboost.sklearn import XGBClassifier
    if  model=='XGB':
        parameters = {'max_depth': [3,5, 10, 15, 20, 25],
          			  'learning_rate':[0.1, 0.3, 0.6],
          			  'subsample': [0.6, 0.7, 0.8, 0.85, 0.95],
              		  'colsample_bytree': [0.5, 0.6, 0.7, 0.8, 0.9]}
        xlf= XGBClassifier(n_estimators=50)
        grid = GridSearchCV(xlf, param_grid=parameters, scoring='accuracy', cv=3)
        grid.fit(X_train, y_train)
        best_params=grid.best_params_
        res_model=XGBClassifier(max_depth=best_params['max_depth'],learning_rate=best_params['learning_rate'],subsample=best_params['subsample'],colsample_bytree=best_params['colsample_bytree'])
        res_model.fit(X_train, y_train)
    else:
        pass
    return res_model
xgb_model= model_train(X_train, y_train, model='XGB') 
  • 保存模型
# 导入包
import joblib 
# 保存模型
joblib.dump(xgb_model, 'train_rf_importance_model.dat', compress=3) 

二、加载模型并用于预测

load joblib.load(filename, mmap_mode=None)
  • filename:str.pathlib.Path或文件对象。要从中加载对象的文件或文件路径。
  • mmap_mode:{无,‘r +’,‘r’,‘w +’,‘c’},可选如果不是“None”,则从磁盘对阵列进行内存映射。此模式对压缩文件无效。请注意,在这种情况下,重建对象可能不再与原始对象完全匹配。

加载模型

# 加载模型
load_model_xgb_importance = joblib.load("F:\\python_machine_learing_work\\501_model\\data\\测试集\\train_xgb_importance_model.dat")
# 使用模型预测
y_pred_rf = model_predict(load_model_xgb_importance, X_test, alpha = alpha)

到此这篇关于Python中的joblib模块详解的文章就介绍到这了,更多相关Python的joblib模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python中关于日期时间处理的问答集锦

    python中关于日期时间处理的问答集锦

    python中有关日期时间处理的问答集锦,有需要的朋友不妨参考下
    2013-03-03
  • Python 四舍五入到最接近的十位(最新推荐)

    Python 四舍五入到最接近的十位(最新推荐)

    Python具有三个内置函数round()、floor()和ceil(),可用于对数字进行舍入,本篇文章将讨论使用Python的ceil()函数将数字四舍五入到最接近的十,感兴趣的朋友跟随小编一起看看吧
    2022-04-04
  • Python OpenCV实现3种滤镜效果实例

    Python OpenCV实现3种滤镜效果实例

    opencv是一个很强大的库,支持多个编程语言,下面这篇文章主要给大家介绍了关于Python OpenCV实现3种滤镜效果的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • 用python实现弹球小游戏

    用python实现弹球小游戏

    大家好,本篇文章主要讲的是用python实现弹球小游戏,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • Python while true实现爬虫定时任务

    Python while true实现爬虫定时任务

    这篇文章主要介绍了Python爬虫定时任务简单实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 利用OpenCV给彩色图像添加椒盐噪声的方法

    利用OpenCV给彩色图像添加椒盐噪声的方法

    椒盐噪声是数字图像中的常见噪声,一般是图像传感器、传输信道及解码处理等产生的黑白相间的亮暗点噪声,椒盐噪声常由图像切割产生,这篇文章主要给大家介绍了关于利用OpenCV给彩色图像添加椒盐噪声的相关资料,需要的朋友可以参考下
    2021-10-10
  • Python 写了个新型冠状病毒疫情传播模拟程序

    Python 写了个新型冠状病毒疫情传播模拟程序

    这篇文章主要介绍了Python 写了个新型冠状病毒疫情传播模拟程序,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • python中Tkinter详细基础教学实例代码

    python中Tkinter详细基础教学实例代码

    这篇文章主要给大家介绍了关于python中Tkinter详细基础教学的相关资料,文中介绍了如Label、Button、Entry、Text、Frame、Menu、Canvas、Messagebox等的基本属性和用法,并介绍了布局管理器pack、grid和place的使用方法,需要的朋友可以参考下
    2024-12-12
  • 讲解Python中if语句的嵌套用法

    讲解Python中if语句的嵌套用法

    这篇文章主要介绍了讲解Python中if语句的嵌套用法,是Python入门当中的基础知识,需要的朋友可以参考下
    2015-05-05
  • python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例

    python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例

    这篇文章主要介绍了python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例,需要的朋友可以参考下
    2020-02-02

最新评论