lightGBM 回归模型代码

文章展示了如何利用Python的lightGBM库构建回归模型,并通过K折交叉验证评估模型性能。K折交叉验证用于优化模型参数,通过计算训练和测试集的MSE来衡量模型效果。最后,文章详细说明了如何使用joblib库保存和加载模型,以便于后续预测使用。
摘要由CSDN通过智能技术生成

lightGBM 回归模型代码




个人认为 K 折交叉验证是通过 K 次平均结果,用来评价测试模型或者该组参数的效果好坏,通过 K折交叉验证之后找出最优的模型和参数,最后预测还是重新训练预测一次。

lightGBM K折验证效果

from sklearn.model_selection import KFold
import lightgbm as lgb
import numpy as np
import pandas as pd


train_data2 = pd.read_csv('./data/zhengqi_train.txt', sep='\t')
test_data2 = pd.read_csv('./data/zhengqi_test.txt', sep='\t')
train_data2_f = train_data2[test_data2.columns].values
train_data2_target = train_data2['target'].values

# 5 折交叉验证
Folds = 5
kf = KFold(n_splits=5)
# 记录训练和预测 MSE
MSE_DICT = {'train_mse': [], 'test_mse': []}

# 线下训练预测
for i, (train_index, test_index) in enumerate(kf.split(train_data2_f)):
    # LGB 树模型
    lgb_reg = lgb.LGBMRegressor(
        learning_rate=0.01,
        max_depth=-1,
        n_estimators=5000,
        boosting_type='gbdt',
        random_state=2019,
        objective='regression'
    )
    # 切分训练集和预测集
    X_train_KFold, X_test_KFold = train_data2_f[train_index], train_data2_f[test_index]
    y_train_KFold, y_test_KFold = train_data2_target[train_index], train_data2_target[test_index]

    # 训练模型
    lgb_reg.fit(
        X=X_train_KFold,
        y=y_train_KFold,
        eval_set=[(X_train_KFold, y_train_KFold), (X_test_KFold, y_test_KFold)],
        eval_names=['Train', 'Test'],
        early_stopping_rounds=200,
        eval_metric='MSE',
        verbose=50
    )

    # 训练集和测试集预测
    y_train_KFold_predict = lgb_reg.predict(X_train_KFold, num_iteration=lgb_reg.best_iteration_)
    y_test_KFold_predict = lgb_reg.predict(X_test_KFold, num_iteration=lgb_reg.best_iteration_)

    print(f"第{i+1}折 训练和预测 训练MSE 预测MSE")
    train_mse = mean_squared_error(y_train_KFold_predict, y_train_KFold)
    print('------\n', '训练MSE\n', train_mse, '\n------')
    test_mse = mean_squared_error(y_test_KFold_predict, y_test_KFold)
    print('------\n', '预测MSE\n', test_mse, '\n------')

    MSE_DICT['train_mse'].append(train_mse)
    MSE_DICT['test_mse'].append(test_mse)
    
print('------\n', '训练MSE\n', MSE_DICT['train_mse'], '\n', np.mean(MSE_DICT['train_mse']), '\n------')
print('------\n', '预测MSE\n', MSE_DICT['test_mse'], '\n', np.mean(MSE_DICT['test_mse']), '\n------')

模型保存与调用

import lightgbm as lgb
import joblib

# 模型训练
lgb_reg = lgb.LGBMRegressor(objective='regression', num_leaves=31, learning_rate=0.05, n_estimators=20)
lgb_reg.fit(train_data, train_target, eval_set=[test_data, test_target], eval_metric='l1', early_stopping_rounds=5)

# 保存模型
joblib.dump(lgb_reg, 'model.pkl')
# 模型加载
lgb_reg = joblib.load('model.pkl')

# 模型预测
test_predict = lgb_reg.predict(test_data, num_iteration=lgb_reg.best_iteration_)
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GBDT回归调库代码示例: 使用sklearn库中的GradientBoostingRegressor类来实现GBDT回归模型。首先,导入必要的库和模块: ```python from sklearn.ensemble import GradientBoostingRegressor from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error ``` 接下来,准备数据集并将其划分为训练集和测试集: ```python # 假设X为特征矩阵,y为目标变量 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` 然后,创建并训练GBDT回归模型: ```python # 创建GBDT回归模型 gbdt = GradientBoostingRegressor() # 训练模型 gbdt.fit(X_train, y_train) ``` 接下来,使用训练好的模型进行预测: ```python # 预测 y_pred = gbdt.predict(X_test) ``` 最后,评估模型的性能: ```python # 计算均方误差 mse = mean_squared_error(y_test, y_pred) ``` LightGBM回归调库代码示例: 使用LightGBM库来实现LightGBM回归模型。首先,导入必要的库和模块: ```python import lightgbm as lgb from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error ``` 接下来,准备数据集并将其划分为训练集和测试集: ```python # 假设X为特征矩阵,y为目标变量 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` 然后,将数据集转换为LightGBM的数据格式: ```python # 创建LightGBM的数据集 train_data = lgb.Dataset(X_train, label=y_train) test_data = lgb.Dataset(X_test, label=y_test) ``` 接下来,设置模型参数并训练LightGBM回归模型: ```python # 设置模型参数 params = { 'objective': 'regression', 'metric': 'mse' } # 训练模型 gbm = lgb.train(params, train_data, num_boost_round=100) ``` 接下来,使用训练好的模型进行预测: ```python # 预测 y_pred = gbm.predict(X_test) ``` 最后,评估模型的性能: ```python # 计算均方误差 mse = mean_squared_error(y_test, y_pred) ``` 以上是使用sklearnLightGBM库实现GBDT和LightGBM回归模型的简单示例代码。具体的调参和数据处理方法可以根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值