Coogle组队学习1-2月 LightGBM 任务一和二

该博客介绍了如何使用LightGBM库对iris数据集进行分类模型训练,包括数据划分、模型参数设置、训练过程及预测。同时,详细展示了使用pickle和json保存模型的方法,并在之后加载模型进行预测。此外,还提到了LightGBM与sklearn API在训练参数上的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

任务1:模型训练与预测

步骤1:导入LightGBM库
步骤2:使用LGBMClassifier对iris进行训练。
步骤3:将预测的模型对iris进行预测。

1.1 导包

import numpy as np
import pandas as pd
import lightgbm as lgb
import json
from sklearn import datasets
# 读取数据
iris = datasets.load_iris()  #载入数据集
# iris

1.2 构建数据集

from sklearn.model_selection import train_test_split

# 将原始数据划分为训练,测试,验证集
train_data_all,test_data,train_y_all,test_y = \
                train_test_split(iris.data, iris.target,test_size=0.2,random_state=1,shuffle=True,stratify=iris.target)
train_data,val_data,train_y,val_y = \
                train_test_split(train_data_all, train_y_all,test_size=0.2,random_state=1,shuffle=True,stratify=train_y_all)

1.3 训练模型

参考来源:https://blog.csdn.net/PIPIXIU/article/details/82709899

在使用lightgbm的时候,其实它有两种方法,第一种是lgbt自带的方法,这里称为“lightgbm naive API”。另一种是使用sklearn的api。在使用sklearn的api进行训练的时候,需要先定义模型,是分类lgb.LGBMClassifier还是回归lgb.LGBMRegressor

若是以这种方式进行训练,则需要使用.fit方法,即下面展示的这样子。另一种方法,是直接调用lightGBM的库,使用原生的.train方法。该方法在下一个任务里面会用到,这里暂时不展示。

注:

  1. 多分类时lgb.train除了'objective':'multiclass',还要指定"num_class":5,而sklearn接口只需要指定'objective':'multiclass'
  2. lgb.train中正则化参数为"lambda_l1", "lambda_l2",sklearn中则为'reg_alpha', 'reg_lambda'
  3. 迭代次数在sklearn中是'n_estimators':300,在初始化模型时指定。而在lgb.train中则可在参数params中指定,也可在函数形参中指出。
# 使用LGBMClassifier对iris进行训练
params_sklearn = {
    'learning_rate':0.1,
    'max_bin':150,
    'num_leaves':32,    
    'max_depth':11,
    
    'reg_alpha':0.1,
    'reg_lambda':0.2,   
     
    'objective':'multiclass',
    'n_estimators':300,
    #'class_weight':weight
}

clf = lgb.LGBMClassifier(**params_sklearn)
clf.fit(train_data,train_y,early_stopping_rounds=10,eval_set=[(val_data,val_y)],verbose=10)

在这里插入图片描述

1.4 模型预测

# 进行预测
y_pred=clf.predict(test_data)
print(y_pred)

[2 0 1 0 0 0 2 2 2 1 0 1 2 1 2 0 2 1 1 2 1 1 0 0 2 1 0 0 1 1]

任务2:模型的保存与加载

步骤1:将任务1训练得到的模型,使用pickle进行保存。
步骤2:将任务1训练得到的模型,使用json进行保存。
步骤3:加载步骤1和步骤2的模型,并进行预测。

2.1 使用pickle保存模型

import pickle
pickle.dump(clf, open('model', 'wb'))

2.2 使用json保存模型

import json
model_json = clf.dump_model()
json.dump(model_json,open('model.json','w'))

2.3 加载模型,进行预测

# 模型加载
clf = pickle.load(open('model','rb'))
# 模型预测
y_pred=clf.predict(test_data)
# 预测结果
y_pred

[2 0 1 0 0 0 2 2 2 1 0 1 2 1 2 0 2 1 1 2 1 1 0 0 2 1 0 0 1 1]

2.4 另外一种方法

# 保存
clf.save_model('model.txt')
# 加载
clf = lgb.Booster(model_file='model.txt') # 注意这里指定model_file
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值