• XGBoost--5--代码编写基本流程--回归


    这一节主要介绍以下使用XGBoost算法再CPU/GPU版本下代码的编写基本流程,主要分为以下几个部分:

    • 构造训练集/验证
    • 算法参数设置
    • XGBoost模型训练/验证
    • 模型预测

    本节主要面对的任务场景是回归任务,有关多分类的任务见:XGBoost–4–代码编写基本流程–分类

    另外,除上述几个部分外,会涉及到sklearn用于加载数据集以及最后的模型预测的评价指标计算;

    导入使用到的库:

    import time
    import xgboost as xgb
    from sklearn.datasets import load_diabetes, load_boston
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import mean_squared_error, mean_absolute_error
    from libs.xgboost_plot import plot_training_merror
    

    1. 构造数据集/验证集

    使用sklearn导入数据集,并进一步拆分成训练集、验证;

    # 使用sklearn加载数据集
    diabetes = load_boston()
    data, labels = diabetes.data, diabetes.target
    
    # 拆分数据集
    x_train, x_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, random_state=7)
    print("x_train: {}, x_test: {}".format(x_train.shape, x_test.shape))
    

    构造XGBoost算法需要的输入格式:

    dtrain = xgb.DMatrix(x_train, y_train)  # 训练集
    dtest = xgb.DMatrix(x_test, y_test)  # 验证集
    evals = [(dtrain, 'train'), (dtest, 'val')]  # 训练过程中进行验证
    

    2. 算法参数设置

    算法模型参数设置,详情见:XGBoost Parameters

        params = {
            'tree_method': "gpu_hist",
            'booster': 'gbtree',
            'objective': 'reg:squarederror',
            'max_depth': 6,
            'eval_metric': 'mae',
            'eta': 0.01,
            'verbosity': 0,
            'gpu_id': 0
        }
    

    简单介绍以下:

    • tree_methodgpu_hist表示使用GPU运算,影响的可以使用hist利用CPU计算;
    • objective,目标函数
    • eval_metric: 训练过程中的评估方法

    3. XGBoost模型训练/验证

    模型训练、保存模型、绘制mae图像;

    s_time = time.time()
    train_res = {}
    model = xgb.train(params, dtrain, num_boost_round=300,
                      evals=evals,
                      evals_result=train_res)
    print("模型训练耗时: {}".format(time.time() - s_time))
    
    # 模型保存
    save_path = "./saved_model/model_regression.model"
    model.save_model(save_path)
    
    # train/val的merror绘图
    merror_img_path = "./test/error.png"
    plot_training_merror(train_res, merror_img_path, type='mae')
    

    4. 模型预测

    模型预测,打印预测结果:

    pred_data = model.predict(dtest)
    res = mean_absolute_error(y_test, pred_data)
    print(res)
    
    ...
    [298]	train-mae:1.47924	val-mae:2.60373
    [299]	train-mae:1.46995	val-mae:2.59919
    模型训练耗时: 1.8448662757873535
    2.5991851900138103
    

    5. 结语

    XGBoost最最最最基本的回归任务基本代码编写流程就是这样了,当然了,这是最最最基本的了:

    • 构建数据集
    • 参数设置
    • 模型训练、保存、预测;

    同样地,在实际的业务应用中,每一步都存在很多点值得深究;

    例如,有一句话说特征工程的高度就决定了算法模型的精度,那么在构造数据集之前的特征工程的重要性不言而喻;

    另外,在参数设置过程中,某些参数的使用对于训练的过程也起到了至关重要的作用,例如树深度、目标函数、评价方法、正则化项等等很多东西;

    所以说,还是那句话,知其然知其所以然,本节仅仅用于说明在回归任务中编写XGBoost算法模型的基本流程,接下来一起向下深究,解决好我们所面对的实际任务。

  • 相关阅读:
    timeouts _ golang
    select.go
    channel directions _ golang
    channel synchronization _ golang
    channel _ buffering
    servlet:共享资源造成的线程冲突
    java:多线程的 共享资源冲突问题
    jsp:通过过滤器进行网页的资源管理
    jsp:通过Session控制登陆时间和内部页面的访问
    java:数据结构
  • 原文地址:https://www.cnblogs.com/chenzhen0530/p/13885239.html
Copyright © 2020-2023  润新知