【AI实战】xgb.XGBRegressor之多回归MultiOutputRegressor调参1

xgb.XGBRegressor之多回归MultiOutputRegressor调参1

  • 环境

    • Ubuntu18.04
    • python3.6.9
    • xgboost 1.5.2
  • 依赖库

    import pandas as pd
    from sklearn.model_selection import train_test_split
    from sklearn.model_selection import GridSearchCV #网格搜索
    from sklearn.metrics import make_scorer
    from sklearn.metrics import r2_score
    from sklearn.ensemble import GradientBoostingRegressor
    from sklearn.multioutput import MultiOutputRegressor
    import xgboost as xgb
    import joblib
    

szZack的博客

  • 调参核心代码

    def tune_parameter(train_data_path, test_data_path, n_input, n_output, version):
        # 模型调参
        
        x,y = load_data(version, 'train', train_data_path, n_input, n_output)
        train_x,test_x,train_y,test_y = train_test_split(x,y,test_size=0.2,random_state=2022)
        
        gsc = GridSearchCV(
                estimator=xgb.XGBRegressor(seed=42),
                param_grid={"learning_rate": [0.05, 0.10, 0.15],
                            "n_estimators":[400, 500, 600, 700],
                            "max_depth": [ 3, 5, 7],
                            "min_child_weight": [ 1, 3, 5, 7],
                            "gamma":[ 0.0, 0.1, 0.2],
                            "colsample_bytree":[0.7, 0.8, 0.9],
                            "subsample":[0.7, 0.8, 0.9],
                            },
                            cv=3, scoring='neg_mean_squared_error', verbose=0, n_jobs=4)
    
        grid_result = MultiOutputRegressor(gsc).fit(train_x, train_y)
    
        #best_params = grid_result.estimators_[0].best_params_
        print('-'*20)
        print('best_params:')
        for i in range(len(grid_result.estimators_)):
            print(i, grid_result.estimators_[i].best_params_)
        
        model = grid_result
        
        pre_y = model.predict(test_x)
        print('-'*20)
        #计算决策系数r方
        r2 = performance_metric(test_y, pre_y)  
        print('test_r2 = ', r2)
    
    def performance_metric(y_true, y_predict):
        
        score = r2_score(y_true,y_predict)
        
        MSE=np.mean(( y_predict- y_true)**2)
        print('RMSE: ',MSE**0.5)
        MAE=np.mean(np.abs( y_predict- y_true))
        print('MAE: ',MAE)
        
        return score
        
    

    保存调参后的模型,增加下面代码即可
    szZack的博客

    joblib.dump(model, './ml_data/xgb_%d_%d_%s.model' %(n_input, n_output, version)) 
    

    调参:修改 param_grid 为自己的参数即可

    param_grid = {
    	"learning_rate": [0.05, 0.10, 0.15],
        "n_estimators":[400, 500, 600, 700],
        "max_depth": [ 3, 5, 7],
        "min_child_weight": [ 1, 3, 5, 7],
        "gamma":[ 0.0, 0.1, 0.2],
        "colsample_bytree":[0.7, 0.8, 0.9],
        "subsample":[0.7, 0.8, 0.9],
    }
    

    szZack的博客
    调参线程数量 n_jobs=4 ,可根据自己的机器设定,也可以设置 n_jobs=-1

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
xgb.XGBRegressor是一种基于梯度提升决策树的回归模型,它是XGBoost库中的一个重要算法。 xgb.XGBRegressor模型的建立基于梯度提升决策树(Gradient Boosting Decision Tree)的思想。梯度提升决策树是一种集成学习算法,它通过将多个弱学习器(决策树)结合起来,形成一个强大的模型。它是一种串行的建模方法,在每一轮迭代中,通过拟合前一轮的残差,来逐步调整模型的预测结果,使其逼近真实值。 xgb.XGBRegressor模型可以用于回归问题,其中目标是预测连续型变量的值。在建模过程中,需要指定一些参数,例如学习率(learning rate)、最大迭代次数(n_estimators)等。学习率控制每个决策树的贡献程度,较小的学习率可以使模型更加保守,较大的学习率可以使模型更加激进。最大迭代次数决定了模型训练的轮数,较大的迭代次数可以使模型更加精确,但也增加了计算时间。 除了基本参数,xgb.XGBRegressor还可以进行更高级的调优。例如,可以指定每个决策树的最大深度、叶子节点的最小样本数、特征子集的抽样比例等。这些参数可以影响模型的拟合能力和泛化能力,通过调整它们可以提高模型的性能。 总的来说,xgb.XGBRegressor是一种强大的回归模型,它结合了梯度提升决策树的优点,可以用于解决各种回归问题。它具有丰富的参数选项,可以根据不同的数据集和问题进行调优,以获得更好的预测性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

szZack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值